github.com/bugraaydogar/snapd@v0.0.0-20210315170335-8c70bb858939/interfaces/builtin/calendar_service.go (about)

     1  // -*- Mode: Go; indent-tabs-mode: t -*-
     2  
     3  /*
     4   * Copyright (C) 2018 Canonical Ltd
     5   *
     6   * This program is free software: you can redistribute it and/or modify
     7   * it under the terms of the GNU General Public License version 3 as
     8   * published by the Free Software Foundation.
     9   *
    10   * This program is distributed in the hope that it will be useful,
    11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13   * GNU General Public License for more details.
    14   *
    15   * You should have received a copy of the GNU General Public License
    16   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17   *
    18   */
    19  
    20  package builtin
    21  
    22  import (
    23  	"github.com/snapcore/snapd/release"
    24  )
    25  
    26  const calendarServiceSummary = `allows communication with Evolution Data Service Calendar`
    27  
    28  const calendarServiceBaseDeclarationSlots = `
    29    calendar-service:
    30      allow-installation:
    31        slot-snap-type:
    32          - core
    33      deny-auto-connection: true
    34  `
    35  
    36  const calendarServiceConnectedPlugAppArmor = `
    37  # Description: Allow access to Evolution Data Service for calendars
    38  
    39  #include <abstractions/dbus-session-strict>
    40  
    41  # Allow use of ObjectManager APIs, used to enumerate sources
    42  dbus (receive, send)
    43  	bus=session
    44  	interface=org.freedesktop.DBus.ObjectManager
    45  	path=/org/gnome/evolution/dataserver{,/**}
    46  	peer=(label=unconfined),
    47  
    48  # Allow access to properties on sources
    49  dbus (receive, send)
    50  	bus=session
    51  	interface=org.freedesktop.DBus.Properties
    52  	path=/org/gnome/evolution/dataserver/SourceManager{,/**}
    53  	peer=(label=unconfined),
    54  dbus (receive, send)
    55  	bus=session
    56  	interface=org.freedesktop.DBus.Properties
    57  	path=/org/gnome/evolution/dataserver/Calendar{,/**}
    58  	peer=(label=unconfined),
    59  dbus (receive, send)
    60  	bus=session
    61  	interface=org.freedesktop.DBus.Properties
    62  	path=/org/gnome/evolution/dataserver/CalendarFactory
    63  	peer=(label=unconfined),
    64  dbus (receive, send)
    65  	bus=session
    66  	interface=org.freedesktop.DBus.Properties
    67  	path=/org/gnome/evolution/dataserver/CalendarView{,/**}
    68  	peer=(label=unconfined),
    69  dbus (receive, send)
    70  	bus=session
    71  	interface=org.freedesktop.DBus.Properties
    72  	path=/org/gnome/evolution/dataserver/Subprocess{,/**}
    73  	peer=(label=unconfined),
    74  # Allow access to methods
    75  dbus (receive, send)
    76  	bus=session
    77  	interface=org.gnome.evolution.dataserver.Calendar
    78  	path=/org/gnome/evolution/dataserver/{Subprocess,Calendar}{,/**}
    79  	peer=(label=unconfined),
    80  dbus (receive, send)
    81  	bus=session
    82  	interface=org.gnome.evolution.dataserver.CalendarFactory
    83  	path=/org/gnome/evolution/dataserver/CalendarFactory
    84  	peer=(label=unconfined),
    85  dbus (receive, send)
    86  	bus=session
    87  	interface=org.gnome.evolution.dataserver.CalendarView
    88  	path=/org/gnome/evolution/dataserver/CalendarView{,/**}
    89  	peer=(label=unconfined),
    90  dbus (receive, send)
    91  	bus=session
    92  	interface=org.gnome.evolution.dataserver.Source
    93  	path=/org/gnome/evolution/dataserver/SourceManager{,/**}
    94  	peer=(label=unconfined),
    95  dbus (receive, send)
    96  	bus=session
    97  	interface=org.gnome.evolution.dataserver.Source.Removable
    98  	path=/org/gnome/evolution/dataserver/SourceManager{,/**}
    99  	peer=(label=unconfined),
   100  dbus (receive, send)
   101  	bus=session
   102  	interface=org.gnome.evolution.dataserver.SourceManager
   103  	path=/org/gnome/evolution/dataserver/SourceManager
   104  	peer=(label=unconfined),
   105  
   106  # Allow clients to introspect the service
   107  dbus (send)
   108  	bus=session
   109  	interface=org.freedesktop.DBus.Introspectable
   110  	path=/org/gnome/evolution/dataserver/Calendar{,/**}
   111  	member=Introspect
   112  	peer=(label=unconfined),
   113  dbus (send)
   114  	bus=session
   115  	interface=org.freedesktop.DBus.Introspectable
   116  	path=/org/gnome/evolution/dataserver/CalendarFactory
   117  	member=Introspect
   118  	peer=(label=unconfined),
   119  dbus (send)
   120  	bus=session
   121  	interface=org.freedesktop.DBus.Introspectable
   122  	path=/org/gnome/evolution/dataserver/CalendarView{,/**}
   123  	member=Introspect
   124  	peer=(label=unconfined),
   125  dbus (send)
   126  	bus=session
   127  	interface=org.freedesktop.DBus.Introspectable
   128  	path=/org/gnome/evolution/dataserver/SourceManager{,/**}
   129  	member=Introspect
   130  	peer=(label=unconfined),
   131  `
   132  
   133  func init() {
   134  	registerIface(&commonInterface{
   135  		name:                  "calendar-service",
   136  		summary:               calendarServiceSummary,
   137  		implicitOnClassic:     !(release.ReleaseInfo.ID == "ubuntu" && release.ReleaseInfo.VersionID == "14.04"),
   138  		baseDeclarationSlots:  calendarServiceBaseDeclarationSlots,
   139  		connectedPlugAppArmor: calendarServiceConnectedPlugAppArmor,
   140  	})
   141  }