Support proxying chat images via camo
Camo: https://github.com/atmos/camo. This has a couple advantages over just allowing images to be dumped as-is: - Prevents mixed-content warnings by allowing the server to proxy HTTP images to an HTTPS camo instance - Protects users' privacy by not exposing their browser directly to the image host - Allows the camo proxy to intercept and reject bad image sources (URLs that are not actually images, gigapixel-sized images likely to DoS users' browsers, etc.) Whitelisting specific domains is supported for cases where the source is known to be trustworthy.
This commit is contained in:
parent
f968521936
commit
22a9acfc90
8 changed files with 194 additions and 4 deletions
25
test/configuration/camoconfig.js
Normal file
25
test/configuration/camoconfig.js
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
const assert = require('assert');
|
||||
const CamoConfig = require('../../lib/configuration/camoconfig').CamoConfig;
|
||||
|
||||
describe('CamoConfig', () => {
|
||||
describe('#constructor', () => {
|
||||
it('strips trailing slashes from the server', () => {
|
||||
const config = new CamoConfig({
|
||||
camo: {
|
||||
server: 'http://abc.xyz/'
|
||||
}
|
||||
});
|
||||
assert.strictEqual(config.getServer(), 'http://abc.xyz');
|
||||
});
|
||||
|
||||
it('defaults to enabled=false', () => {
|
||||
assert.strictEqual(new CamoConfig().isEnabled(), false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('#getWhitelistedDomains', () => {
|
||||
it('defaults to an empty array', () => {
|
||||
assert.deepStrictEqual(new CamoConfig().getWhitelistedDomains(), []);
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue