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

  Please edit settings.json, not settings.json.template
*/
{
  // Name your instance!
  "title": "<%= @etherpad_title %>",

  //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" : "<%= @session_key %>",

  //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" : "<%= @db_type %>",
  //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": "notusingthis1!",
      "is_admin": false
    },
    "user": {
      "password": "notusingthis2!",
      "is_admin": false
    }
  },
  */

  // restrict socket.io transport methods
  "socketTransportProtocols" : ["websocket", "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"
            }
        }
        }
    }*/
    ] }
}
