- settings = cached_settings[debug ? 'debug' : 'production'];
-
- // Generate the settings if we don't have them cached as yet
- if (settings.settings === '') {
- generateSettings(request, debug, function (err, settings) {
- if (err) {
- response.statusCode = 500;
- response.end();
- } else {
- sendSettings.call(this, request, response, settings);
- }
- });
-
- } else {
- sendSettings.call(this, request, response, settings);
- }
-}
-
-
-/**
- * Send the the settings to the browser
- */
-function sendSettings(request, response, settings) {
- if (request.headers['if-none-match'] && request.headers['if-none-match'] === settings.hash) {
- response.writeHead(304, 'Not Modified');
- return response.end();
- }
-
- response.writeHead(200, {
- 'ETag': settings.hash,
- 'Content-Type': 'application/json'
- });
- response.end(settings.settings);
-}
-
-
-/**
- * Generate a settings object for the client.
- * Settings include available translations, default client config, etc
- */
-function generateSettings(request, debug, callback) {
- var vars = {
- server_settings: {},
- client_plugins: [],
- translations: [],
- scripts: [
- [
- 'libs/lodash.min.js'
- ],
- ['libs/backbone.min.js', 'libs/jed.js']
- ]
- };
-
- if (debug) {
- vars.scripts = vars.scripts.concat([
- [
- 'src/app.js',
- 'libs/engine.io.js',
- 'libs/engine.io.tools.js'
- ],
- [
- 'src/models/application.js',
- 'src/models/gateway.js'
- ],
- [
- 'src/models/newconnection.js',
- 'src/models/panellist.js',
- 'src/models/networkpanellist.js',
- 'src/models/panel.js',
- 'src/models/member.js',
- 'src/models/memberlist.js',
- 'src/models/network.js'
- ],
-
- [
- 'src/models/query.js',
- 'src/models/channel.js',
- 'src/models/server.js',
- 'src/models/applet.js'
- ],
-
- [
- 'src/applets/settings.js',
- 'src/applets/chanlist.js',
- 'src/applets/scripteditor.js'
- ],
-
- [
- 'src/models/pluginmanager.js',
- 'src/models/datastore.js',
- 'src/helpers/utils.js'
- ],
-
- // Some views extend these, so make sure they're loaded beforehand
- [
- 'src/views/panel.js'
- ],
-
- [
- 'src/views/channel.js',
- 'src/views/applet.js',
- 'src/views/application.js',
- 'src/views/apptoolbar.js',
- 'src/views/controlbox.js',
- 'src/views/favicon.js',
- 'src/views/mediamessage.js',
- 'src/views/member.js',
- 'src/views/memberlist.js',
- 'src/views/menubox.js',
- 'src/views/networktabs.js',
- 'src/views/nickchangebox.js',
- 'src/views/resizehandler.js',
- 'src/views/serverselect.js',
- 'src/views/statusmessage.js',
- 'src/views/tabs.js',
- 'src/views/topicbar.js',
- 'src/views/userbox.js'
- ]
- ]);
- } else {
- vars.scripts.push(['kiwi.min.js', 'libs/engine.io.bundle.min.js']);
- }
-
- // Any restricted server mode set?
- if (config.get().restrict_server) {
- vars.server_settings = {
- connection: {
- server: config.get().restrict_server,
- port: config.get().restrict_server_port || 6667,
- ssl: config.get().restrict_server_ssl,
- channel: config.get().restrict_server_channel,
- nick: config.get().restrict_server_nick,
- allow_change: false
- }
- };
- }
-
- // Any client default settings?
- if (config.get().client) {
- vars.server_settings.client = config.get().client;
- }
-
- // Any client plugins?
- if (config.get().client_plugins && config.get().client_plugins.length > 0) {
- vars.client_plugins = config.get().client_plugins;
- }
-
- // Get a list of available translations
- fs.readFile(__dirname + '/../client/assets/src/translations/translations.json', function (err, translations) {
- if (err) {
- return callback(err);