Kyle Zhao
dec8e5879a
FEATURE: set CSP base-uri and object-src to none ( #6863 )
2019-01-09 15:04:50 -05:00
Kyle Zhao
61dcd7c52c
FIX: validate YAML before save to avoid race condition
2018-12-25 15:08:17 +02:00
Kyle Zhao
b0c2e9bb05
minor changes to default script-src ( #6770 )
...
- add report-sample to force require a sample of the violating code
- do not whitelist GA/GTM's entire domain
2018-12-14 08:17:31 -05:00
Kyle Zhao
92df7b212c
rename visible to visibleSiteSettings
2018-12-13 13:00:13 +11:00
Kyle Zhao
c9279a118e
FIX: always show filtered site settings
2018-12-13 13:00:13 +11:00
Kyle Zhao
97e6e3b133
DEV: duplicate and unreachable code after return
2018-12-05 09:17:20 -05:00
Kyle Zhao
488fba3c5f
FEATURE: allow plugins and themes to extend the default CSP ( #6704 )
...
* FEATURE: allow plugins and themes to extend the default CSP
For plugins:
```
extend_content_security_policy(
script_src: ['https://domain.com/script.js ', 'https://your-cdn.com/ '],
style_src: ['https://domain.com/style.css ']
)
```
For themes and components:
```
extend_content_security_policy:
type: list
default: "script_src:https://domain.com/ |style_src:https://domain.com "
```
* clear CSP base url before each test
we have a test that stubs `Rails.env.development?` to true
* Only allow extending directives that core includes, for now
2018-11-30 09:51:45 -05:00
Kyle Zhao
80398d0b8f
Extract inline JS on embedded comments ( #6645 )
...
* use the meta refresh tag instead
* extract inline JS in embedded comment
2018-11-22 10:02:58 -05:00
Kyle Zhao
8e32aa1483
FEATURE: show post approvals in Moderation History ( #6643 )
2018-11-22 10:22:23 +08:00
Kyle Zhao
e25b3965a7
do not overwrite hostname in development ( #6623 )
2018-11-20 14:34:02 +11:00
Kyle Zhao
962fbd1ec7
include '/plugins/' directory for script-src and blob for worker-src
...
- plugins may include additional static JS assets
- ACE.js editor register a service worker with a blob for syntax
checking
2018-11-16 16:31:01 -05:00
Kyle Zhao
7cb6082f91
FIX: S3 CDN for markdown it bundle
2018-11-15 16:55:20 -05:00
Kyle Zhao
6fba8b8aef
CSP: include worker_src
...
`worker_src` fallbacks to `script_src`, but #6611 made `script_src` too
restrict to include the service worker.
2018-11-15 13:57:15 -05:00
Kyle Zhao
5f754b43f1
extract inline onpopstate handler on 404 page ( #6613 )
2018-11-15 13:35:38 -05:00
Kyle Zhao
055d59373a
CSP: drop 'self' in script-src ( #6611 )
2018-11-15 12:14:16 -05:00
Kyle Zhao
38a9bc740d
FIX: change title when primary group changes ( #6602 )
2018-11-14 08:28:41 +08:00
Kyle Zhao
d25ae13f0f
FIX: stricter window.opener checks ( #6578 )
2018-11-13 09:56:31 +11:00
Kyle Zhao
3493ea85cc
remove Logster from CSP whitelist ( #6593 )
...
Logster 1.3 no longer has inline JS and is now CSP compliant
2018-11-13 09:55:57 +11:00
Kyle Zhao
931480f7e3
DEV: run linter on Travis ( #6595 )
2018-11-12 14:39:58 -05:00
Kyle Zhao
f9b36820ef
FIX: only extract script tags with certain types ( #6553 )
...
`script` tags with custom types (e.g. `text/template`) are not executed
by the browser, and should not be extracted into an external theme
JavaScript
2018-11-01 16:01:46 -04:00
Kyle Zhao
57ab6bcba1
SECURITY: update loofah for CVE-2018-16468
2018-10-30 10:51:03 -04:00
Kyle Zhao
a6eca28ec6
CSP - extract all other inline JavaScripts ( #6528 )
...
* wizard page inline js
* print topic inline js
* drop JS for preventing double submission
this is the default behavior with Rails' UJS `disable_with` helper
* omniauth complete redirect JS
* account activate inline js
2018-10-25 09:52:01 -04:00
Kyle Zhao
63356d883e
FIX: GlobalPath#upload_cdn_path when S3 bucket has a folder ( #6523 )
2018-10-24 14:34:10 +11:00
Kyle Zhao
2cc195f3d9
prettier linting fix
2018-10-22 14:18:26 -04:00
Kyle Zhao
e9a971a2b6
FEATURE: [Experimental] Content Security Policy ( #6514 )
...
do not register new MIME type, parse raw body instead
2018-10-22 13:22:23 -04:00
Kyle Zhao
dca830cb73
Revert "FEATURE: [Experimental] Content Security Policy ( #6504 )"
...
This reverts commit fb8231077a .
2018-10-19 11:53:29 -04:00
Kyle Zhao
fb8231077a
FEATURE: [Experimental] Content Security Policy ( #6504 )
2018-10-19 10:39:22 -04:00
Kyle Zhao
0f1afad6da
FIX: extracted theme JavaScripts for multisite ( #6502 )
...
* FIX: extracted theme javascripts for multisite
* onceoff to rebake all theme fields
2018-10-18 17:05:34 +11:00
Kyle Zhao
99d1ded3b3
rename route /javascripts to /theme-javascripts ( #6495 )
2018-10-15 11:32:52 -04:00
Kyle Zhao
6acdea37c4
DEV: extract inline js when baking theme fields ( #6447 )
...
* extract inline js when baking theme fields
* destroy javascript cache when destroying theme fields
This work is needed to support CSP work
2018-10-15 15:55:23 +11:00
Kyle Zhao
ffc241eb25
FIX: multiple loadScript to the same url may resolve prematurely ( #6474 )
...
This is how `loadScript(url)` currently deals with multiple concurrent requests
1. Check existing `<script>` tags, and mark existing scripts (other than the
input `url`) as loaded
2. Find "true" `url` of the requested resource (CDN, subfolder path, etc)
3. Check if we have loaded the resource with that "true" `url`, and resolve
immediately if we have
4. Otherwise insert a `<script>` tag with the "true" `url` to load it
For example, in a subfolder install:
- Input `url` = `/javascripts/script.js`
- "True" `url` = `/subfolder/javascript/script.js`
And the _very_ subtle bug here is that we should use also use the true `url`
for step (1), because:
- Since the input and true `url` are different, we mistakenly mark the true
`url` as loaded in step one
- After finding the true `url`, and setting `loaded[trueUrl] = true` in (1), we
resolve the promise prematurely, when the resource could still be loading
2018-10-11 08:55:36 +08:00
Kyle Zhao
acba7d2a5d
Extract discourse_javascript.html.erb to a scrip include
...
* extract omniauth auth complete inline JS
* extract Ember error logging inline JS
* transpile `authentication-complete`
This is CSP related work
2018-10-09 16:50:45 +11:00
Kyle Zhao
8b2a379e4e
DEV: transpile certain ES6 files without producing a module ( #6460 )
...
`.js.no-module.es6` files will be transpiled without producing a module.
import/export statements are deliberately not supported, so one would still need to use
`const module = require('moduleName').default.`
2018-10-09 09:18:23 +08:00
Kyle Zhao
9bbc1ae7b2
FIX: raise if staged user creation failed ( #6461 )
2018-10-08 15:45:23 +08:00
Kyle Zhao
7591da1e64
FIX: s3BaseUrl with small s
2018-10-02 13:06:33 +08:00
Kyle Zhao
d9bea66365
UX: confirmation before changing group membership in admin ( #6426 )
2018-10-01 21:34:08 -07:00
Kyle Zhao
ab448ca8f3
extract client side Discourse setup inline JS ( #6409 )
2018-10-01 21:29:04 -07:00
Kyle Zhao
d0f660806d
FIX: close data-preloaded div tag
2018-10-01 15:24:27 +08:00
Kyle Zhao
4b517d460d
FIX: dashboard test depended on the last month has 31 days
2018-10-01 12:31:27 +08:00
Kyle Zhao
373d6e3fe6
always loadScript with a script tag ( #6411 )
...
to avoid Content Security Policy unsafe-line violations
2018-10-01 10:06:01 +08:00
Kyle Zhao
819f090d6a
move large blobs out of <head> ( #6428 )
...
it unnecessarily bloats the section and increases the payload
dramatically for open graph tags.
2018-09-28 17:28:33 +08:00
Kyle Zhao
e2462ada68
FIX: make theme import's public key field readonly ( #6424 )
...
`disabled` attribute prevents the user from clicking or selecting in the
control whereas `readonly` does not.
2018-09-24 09:12:49 +08:00
Kyle Zhao
e402394375
FEATURE: auto grant an available title when removing old title
...
* FEATURE: auto grant an available title when removing old title
2018-09-21 12:06:08 +10:00
Kyle Zhao
4bb980b9f7
FEATURE: do not allow moderators to export user list ( #6418 )
2018-09-21 09:07:13 +08:00
Kyle Zhao
7a0232249a
extract inline JS that's used to store preloaded data ( #6370 )
2018-09-17 16:31:46 +08:00
Kyle Zhao
7b19ed06c1
reworked specs of existing group behavior
2018-09-17 17:46:43 +10:00
Kyle Zhao
6751662bf8
DEV: yarn prettier in Danger ( #6405 )
...
Use `yarn --silent` to suppress yarn console logs, and only allow for
prettier output.
Escape sequence (`\n`) does not work in single quotes
2018-09-17 15:10:00 +08:00
Kyle Zhao
6659417807
FEATURE: match user title when primary group changes
...
When primary group changes and the user's title is the previous primary
group's title, change the title to the new primary group's title
2018-09-17 15:08:39 +10:00
Kyle Zhao
f666d72606
extract inline JS for google tag manager
2018-09-17 09:56:00 +10:00
Kyle Zhao
38c70bfda2
extract inline JS for google analytics
2018-09-17 09:56:00 +10:00
Kyle Zhao
f1cb431968
FIX: rescue ActiveRecord::RecordInvalid in find_or_create_by_safe! ( #6385 )
...
AR uniqueness validation could raise ActiveRecord::RecordInvalid
2018-09-12 11:03:12 +10:00
Kyle Zhao
e25a6e085e
FIX: drop title updates through RSS feeds
...
can create an update loop
2018-08-28 16:25:04 +10:00
Kyle Zhao
baf413d527
FIX: update TopicEmbed's title and user correctly
2018-08-21 18:31:01 +08:00
Kyle Zhao
983dba37ce
FIX: use BasicUserSerializer for user_badge.granted_by ( #6266 )
...
BasicUserSerializer contains enough information for the badges page,
while UserSerializer issues ~100 SQL queries on the fly when serializing
the field without preloading.
2018-08-14 08:11:14 +10:00
Kyle Zhao
1ed3a89ac9
UX: clear topic timer text when manually closing/opening ( #6123 )
...
* UX: clear topic timer text when manually closing/opening
* added test for clearing topic timer status text
2018-07-26 11:48:38 +10:00
Kyle Zhao
c9d4288214
UX: auto fix order when reordering categories ( #6149 )
...
* set correct position number when moving up/down
* UX: drop 'fix order' and auto re-order subcategory
- auto "fix position" on save
- place subcategories after parent category and maintain the relative
positions on save
2018-07-24 10:25:40 +10:00
Kyle Zhao
2901691e87
FEATURE: per-category approval settings ( #5778 )
...
- disallow moving topics to a category that requires topic approval
2018-07-13 12:51:08 +10:00
Kyle Zhao
0cc4b42180
FIX: TopicEmbed.import should update title and author
2018-05-02 17:12:31 +10:00
Kyle Zhao
3e7638e3f5
Improve docker performance with delegated mount flag ( #5760 )
2018-04-16 10:56:35 +02:00
Kyle Zhao
f7bd05e534
FEATURE: set 'Retry-After' header for 429 responses ( #5659 )
2018-03-13 23:12:41 +08:00
Kyle Zhao
afaf9fd54c
FIX: mods should be able to grant badges in post wrench ( #5522 )
2018-01-25 13:52:05 +11:00
Kyle Zhao
83c549bd31
FEATURE: grant badges in post admin wrench ( #5498 )
...
* FEATURE: grant badges in post admin wrench
* only grant manually grantable badges
* extract GrantBadgeController mixin
2018-01-22 14:10:53 +11:00
Kyle Zhao
c52f747031
FEATURE: Catalan Translations ( #5404 )
2017-12-07 10:36:25 +01:00
Kyle Zhao
5f318a5241
FEATURE: Replace SimpleRSS with Ruby RSS module ( #5311 )
...
* SPEC: PollFeedJob parsing atom feed
* add FeedItemAccessor
It is to provide a consistent interface to access a feed item's tag
content.
* add FeedElementInstaller
to install non-standard and non-namespaced feed elements
* FEATURE: replace SimpleRSS with Ruby RSS module
* get FinalDestination and download with Excon
* support namespaced element with FeedElementInstaller
2017-12-06 10:45:09 +11:00
Kyle Zhao
c1926e6dd2
FIX: do not generate multiple detail blocks when the selected input ( #5290 )
...
consists of multiple lines
2017-11-06 18:03:52 +11:00
Kyle Zhao
82c18f6ca3
fix: undefined variable in post:rebake_match
2017-10-24 20:05:58 -04:00
Kyle Zhao
0342324b47
FEATURE: support regex in rake post:remap ( #5201 )
2017-10-04 11:47:53 +11:00
Kyle Zhao
15cd3b78ae
integration test for PollFeed job
2017-10-02 01:16:11 -04:00
Kyle Zhao
ac666ddf17
PollFeed: check 'content:encoded' for content first
2017-10-02 01:16:11 -04:00
Kyle Zhao
133ab03c01
fix 'details' button acceptance test
2017-08-25 08:36:32 -07:00
Kyle Zhao
5868508e98
GH#retrieve_avatar: simplify conditional and restructured testing
2017-08-22 23:46:50 -04:00
Kyle Zhao
49f0119c12
FEATURE: import Github profile picture
2017-08-22 20:23:47 -04:00
Kyle Zhao
1a32de722b
last attempt at fixing user page layout
...
drop the width setting on the right column *completely* so it can
adjust on it own
https://meta.discourse.org/t/long-words-not-wrapping-in-user-activity-page/68181
2017-08-18 17:28:50 -04:00
Kyle Zhao
375153ce57
fixes overflowing div width on user activity page
...
detailed explanation: https://meta.discourse.org/t/long-words-not-wrapping-in-user-activity-page/68181/8?u=xrav3nz
2017-08-18 01:01:09 -04:00
Kyle Zhao
9c6c4a7705
restructure search-test to test all filters w/ variable visibiltiy
2017-08-09 04:42:50 -04:00
Kyle Zhao
cea2a9fe53
UX: exclude irrelevant search filters for anonymous users
...
On the advanced search page, filters like "I've read", "I'm watch
-ing", etc, are irrelevant to anonymous users and should be hidden
2017-08-08 15:25:40 -04:00