/*
  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template
*/
{
  // Name your instance!
  "title": "OpenStack Etherpad",

  //Ip and port which etherpad should bind at
  "ip": "127.0.0.1",
  "port" : 9001,

  // favicon default name
  "favicon": "favicon.ico",

  // Session Key, used for reconnecting user sessions
  // Set this to a secure string at least 10 characters long.  Do not share this value.
  "sessionKey" : "<%= sessionKey %>",

  //The Type of the database. You can choose between dirty, sqlite and mysql
  //You should use mysql or sqlite for anything else than testing or development
  "dbType" : "<%= dbType %>",
  //the database specific settings
  "dbSettings" : {
                   "user"    : "<%= database_user %>",
                   "host"    : "<%= database_host %>",
                   "password": "<%= database_password %>",
                   "database": "<%= database_name %>"
                 },
  //the default text of a pad
  "defaultPadText" : "Welcome to Etherpad Lite!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nEtherpad Lite on Github: http:\/\/j.mp/ep-lite\n",

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : true,

  /* How long may clients use served javascript code? Without versioning this
    is may cause problems during deployment. */
  "maxAge" : 21600000, // 6 hours

  /* This is the path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to enable the import/export of pads*/
  "abiword" : "/usr/bin/abiword",

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication": false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization": false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */
  /*
  "users": {
    "admin": {
      "password": "changeme1",
      "is_admin": true
    },
    "user": {
      "password": "changeme1",
      "is_admin": false
    }
  },
  */

  // restrict socket.io transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // https://github.com/nomiddlename/log4js-node
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
      { "type": "console"
        //, "category": "access"// only logs pad access
      }
    /*
    , { "type": "file"
    , "filename": "/var/log/eplite/etherpad-lite.log"
      , "maxLogSize": 1024
      , "backups": 30 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
      }*/
    /*
    , { "type": "logLevelFilter"
      , "level": "warn" // filters out all log messages that have a lower level than "error"
      , "appender":
      {  Use whatever appender you want here  }
    }*/
    /*
    , { "type": "logLevelFilter"
      , "level": "error" // filters out all log messages that have a lower level than "error"
      , "appender":
      { "type": "smtp"
        , "subject": "An error occured in your EPL instance!"
        , "recipients": "bar@blurdybloop.com, baz@blurdybloop.com"
        , "sendInterval": 60*5 // in secs -- will buffer log messages; set to 0 to send a mail for every message
        , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods
            "host": "smtp.example.com", "port": 465,
            "secureConnection": true,
            "auth": {
                "user": "foo@example.com",
                "pass": "bar_foo"
            }
        }
        }
    }*/
    ] }
}
