code: func hapiPlugins(w http.ResponseWriter, r *http.Request) {
  	if os.Getenv("ABOT_ENV") != "test" {
  		if !isAdmin(w, r) {
  			return
  		}
  		if !isLoggedIn(w, r) {
  			return
  		}
  	}
  	var settings []struct {
  		Name       string
  		Value      string
  		PluginName string
  	}
  	q := `SELECT name, value, pluginname FROM settings`
  	if err := db.Select(&settings, q); err != nil {
  		writeErrorInternal(w, err)
  		return
  	}
  	type respT struct {
  		ID         uint64
  		Name       string
  		Icon       string
  		Maintainer string
  		Settings   map[string]string
  	}
  	var resp []respT
  	for _, plugin := range PluginsGo {
  		data := respT{
  			ID:         plugin.ID,
  			Name:       plugin.Name,
  			Icon:       plugin.Icon,
  			Maintainer: plugin.Maintainer,
  			Settings:   map[string]string{},
  		}
  		for k, v := range plugin.Settings {
  			data.Settings[k] = v.Default
  		}
  		for _, setting := range settings {
  			if setting.PluginName != plugin.Name {
  				continue
  			}
  			data.Settings[setting.Name] = setting.Value
  		}
  		resp = append(resp, data)
  	}
  	writeBytes(w, resp)
  }
docs: // hapiPlugins responds with all of the server's installed plugin
  // configurations from each their respective plugin.json files and
  // database-stored configuration.