Commit Graph

262 Commits (86cb39d30e0b9a7b9df2a966c2212e3a1f1da60f)
 

Author SHA1 Message Date
Alexander Larsson 86cb39d30e Run each app in a custom systemd user scope (if available) 2015-03-04 14:40:17 +01:00
Alexander Larsson c40eba6e97 Check for sys/capability.h via AC_CHECK_HEADER instead 2015-03-02 12:36:56 +01:00
Alexander Larsson c7c201faa9 Revert "Look for libcap pkg-config file for cflags to ensure we have the headers"
This breaks gnome-continuous which doesn't have a pc file for libcap.

This reverts commit 26d9596730.
2015-03-02 12:27:09 +01:00
Alexander Larsson 26d9596730 Look for libcap pkg-config file for cflags to ensure we have the headers
We don't actually link to the library though.
2015-03-02 11:55:31 +01:00
Alexander Larsson e3d5c2d801 Fix warning in add-remote if no summary.
We were always ref:ing the hashtable, so always allocate it.
2015-03-02 11:38:37 +01:00
Alexander Larsson 471cdba23e Move writable area from /var to ~/.var/app/$appid
Having /var writable is pretty weird for a desktop app, this
is typically a system location. Instead of doing this
we assume the user writes writable data into  ~/.var/app/$appid.
This means an app following this can run both as standalone or
as an xdg-app without changes.

If the app has access to the home directory, then this just works.  If
it does not, then we ensure we have this directory in the volatile
home directory and then bind mount in the real directory there.

We also pre-create config/data/cache subdirectories in this
directory and set XDG_DATA/CONFIG/CACHE_HOME to point to them, which
means apps that use these "just work".
2015-02-19 22:52:01 +01:00
Alexander Larsson 82895f5e36 xdg-app run: Make the helper command line a bit shorter
Now that we use getopt we can combine flags in the
commandline.
2015-02-19 20:57:53 +01:00
Alexander Larsson bac241d2e0 xdg-app-helper: Add bool type and use 2015-02-19 20:49:06 +01:00
Alexander Larsson 08227a2002 xdg-app-helper: Use getopt to parse args
This removes some code.
2015-02-19 20:42:42 +01:00
Alexander Larsson c8dc4d1755 xdg-app build - clean the environment
For builds, reproducability and not accidentally getting
the host environment details into the build is pretty important,
so we rebuild the entire environment, controlling exactly
what gets into it.
2015-02-19 19:52:17 +01:00
Alexander Larsson 81c3c0c586 xdg-app-helper: Minor cleanup
This splits the file contents writing to another function.
This will be needed in another place later.
2015-02-19 17:44:34 +01:00
Alexander Larsson cf2a39fe84 Use bind mounts instead of mknod
Instead of creating real device nodes we just bind mount the system
ones. This means that we require no mknod capabilities, which is good
in itself, but it also allows us to eventually run completely
unprivileged with user namespaces.
2015-02-19 17:44:34 +01:00
Alexander Larsson 6584ba71e3 Merge pull request #53 from stbergmann/master
Fix path
2015-02-17 16:58:39 +01:00
Stephan Bergmann d9fabbde86 Fix path 2015-02-17 16:54:56 +01:00
Alexander Larsson d7f186c118 build-finalize: Ensure we always create the export dir
Otherwise build-export fails to see we ran finalize
2015-02-17 16:20:33 +01:00
Alexander Larsson d8ac76d467 Revert "Add share/pixmaps to build-finish exports"
It should be easy to just move the icons to the icons supdirectory.
Lets get rid of share/pixmap...

This reverts commit 2cacc3a67a.
2015-02-13 21:30:47 +01:00
Alexander Larsson bcf2b13279 Don't double-quote command when rewriting desktop files 2015-02-13 11:45:13 +01:00
Alexander Larsson 2cacc3a67a Add share/pixmaps to build-finish exports 2015-02-13 11:45:00 +01:00
Alexander Larsson 7017710201 Apply metadata and --allow --forbid switches in xdg-app build 2015-02-13 10:57:56 +01:00
Alexander Larsson cedcd0ab2b Move allow/forbid env setup to xdg-app-run.c 2015-02-13 10:53:19 +01:00
Alexander Larsson 453423c350 Add xdg_app_run_verify_environment_keys helper 2015-02-13 10:33:36 +01:00
Alexander Larsson 884040dfcc Move run helpers from builtin-run to xdg-app-run.c file 2015-02-13 10:29:41 +01:00
Alexander Larsson 0cb23de365 export: Ensure all exported files are prefixed by the app name
All exported regular files (not directories) need to have a filename
that starts with the application name, followed by either a dot or
any character that is invalid in an app name.

For instance, given an app name of org.gnome.gedit, these filenames
are exported:
org.gnome.gedit
org.gnome.gedit.png
org.gnome.gedit.plugin1.png
org.gnome.gedit-symbolic.svg (- is not a valid character)

However, these are not exported:

org.gnome.geditor
gedit.png

This has several advantages. First of all it ensures that there are no
conflicts between unrelated applications, secondly we also only allow
applications to install dbus services and desktop ids that are the
same as the app id, or sub-services of it.
2015-02-11 14:32:45 +01:00
Alexander Larsson d9c10e5103 export: keep the original name for modified desktop/service files
Rather than keeping around a symlink to the temporary file we rename
the temporary over the original name. Also we keep all seen
files and temporary files in a hashtable so we don't accidentally
process anything twice.
2015-02-11 14:30:53 +01:00
Alexander Larsson c1a0b41a7d Ensure all exported dbus service files have the right name
We're enforcing that the dbus name and the filename has to be the same,
or we're not exporting the file.
2015-02-11 14:29:16 +01:00
Alexander Larsson 1d2baf96d8 Verify app/runtime names and branches in various operations
Whenever we create, install, update, uninstall or run apps we
verify that all app names and branch names are valid.
2015-02-11 12:39:17 +01:00
Alexander Larsson baeb666215 Add utils to validate app/runtime names and branches
There are several reasons to verify these. First of all
we use these as filename elements, so we need to sure that dangerous
things like "..", "/" etc don't appear in them.

Secondly, we want to guarantee that app names are valid dbus well
known bus names as they are used as app-ids in e.g. desktop files.

We also want to enforce the app name as prefix for exported files to
avoid conflicts. This means we disallow two-element names like
"org.gnome", and we disallow "-" in app names, so that "-" can be used
to separate the app name prefix from the rest of the filename. In
particular, this is important for icons, like
"org.gnome.app-symbolic.svg", where we want the only valid prefix to be
org.gnome.app.
2015-02-11 12:31:53 +01:00
Alexander Larsson 29ccfbea89 Copy /etc/localtime instead of making a symlink
This way we inherit timezone updates from the host at
least for the current timezone.
2015-02-10 13:12:00 +01:00
Alexander Larsson cdeeaee4a9 Never mount /root in the app 2015-02-10 10:55:58 +01:00
Alexander Larsson a3e97d256a Make /dev and /dev/dri readonly 2015-02-10 10:55:44 +01:00
Alexander Larsson 72f1bd9b07 Merge pull request #50 from matthiasclasen/run-env2
Add an --allow option to the run command
2015-02-10 09:25:08 +01:00
Alexander Larsson cd3289e0cb Merge pull request #52 from matthiasclasen/repo-title
repo-title
2015-02-10 08:53:50 +01:00
Matthias Clasen f184fbb603 Improve completion
The options of the add-remote command were not being completed.
2015-02-09 17:40:37 +01:00
Matthias Clasen 1e69e3fc42 Make add-remote use title from summary
When we add a remote, load the summary from the repository, and
use the title if there is one. This at the same time serves as
(minimal) validation of the repository url.
2015-02-09 17:18:10 +01:00
Matthias Clasen 34dda64b95 Add a --title option to repo-update
This stores a human-readable title in the additional metadata
of the repo summary. We use xa.title as the key.
2015-02-09 17:17:19 +01:00
Matthias Clasen 2054f0e6f5 change load summary api
We want to call it before we have added a remote to the config,
so pass in the url directly instead of pulling it out of the
repo config.
2015-02-09 15:50:05 +01:00
Matthias Clasen 02b6300453 Fix a thinko 2015-02-09 15:21:52 +01:00
Matthias Clasen 4571eb85f7 Factor out summary loading 2015-02-09 15:21:23 +01:00
Matthias Clasen c07e917b5d Add --allow option to the run command
Allow to fully override the environment settings from the
application metadata. This can be useful for testing.
2015-02-09 13:24:19 +01:00
Matthias Clasen f4b9af3a40 Factor out a utility function 2015-02-09 13:03:39 +01:00
Alexander Larsson 4ff10fee86 Add support for --with-priv-mode=caps
This allows you to set the privs for the helper via file
capabilities instead of setuid.
You can also set the mode to none, but then you have to
manually set either setuid or filecaps (for instance via
a packaging script).
2015-02-08 23:37:47 +01:00
Alexander Larsson c8dd341440 Don't use g_ptr_array_insert
This is too cool for vbatts
2015-02-08 17:25:15 +01:00
Alexander Larsson 9a0dcf6470 Add copies of new glib APIs that we use 2015-02-08 17:08:11 +01:00
Alexander Larsson 3ef9c13598 Set PR_SET_NO_NEW_PRIVS
This means no process in the app can gain any kind of extra
privs during exec() (for instance setuid of file caps).
2015-02-08 11:32:17 +01:00
Alexander Larsson 79b12777bf Add all (unused) args to prctl call 2015-02-08 11:32:17 +01:00
Matthias Clasen a2f9562989 Teach completion about --runtime 2015-02-08 11:32:17 +01:00
Alexander Larsson 4fad768593 Merge pull request #48 from matthiasclasen/prefix-ostree-errors
Prefix many ostree error messages
2015-02-08 01:15:59 +01:00
Alexander Larsson 6a7b43a3c5 Merge pull request #49 from matthiasclasen/quote-args
Quote commandline arguments
2015-02-08 01:14:59 +01:00
Alexander Larsson b2ec77fb2f Don't run xdg-app-helper as root
Instead of running as root we setuid to the real user, after
having assured that we have the minimum amount of capabilities
required (which we then drop at the end).

This means we create all files as the actual user, and we never
risk somehow reading a file that otherwise only root could read.
2015-02-08 01:09:44 +01:00
Matthias Clasen f412d38458 Quote commandline arguments
We don't expect branch or arch names to contain spaces. But if
they do, we should not fall over needlessly.
2015-02-07 18:38:29 +01:00