mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	module-access: make access.allowed an array
Reformat the config file a little
This commit is contained in:
		
							parent
							
								
									ab4223601f
								
							
						
					
					
						commit
						b8ef0fc5bb
					
				
					 2 changed files with 48 additions and 25 deletions
				
			
		| 
						 | 
				
			
			@ -47,11 +47,11 @@ modules = {
 | 
			
		|||
    # If ifexists is given, the module is ignoed when it is not found.
 | 
			
		||||
    # If nofail is given, module initialization failures are ignored.
 | 
			
		||||
    #
 | 
			
		||||
    libpipewire-module-rtkit  = { "#args" = { nice.level = -11
 | 
			
		||||
    libpipewire-module-rtkit  = {
 | 
			
		||||
        "#args" = { nice.level = -11
 | 
			
		||||
	            rt.prio = 20
 | 
			
		||||
                    rt.time.soft = 200000
 | 
			
		||||
					      rt.time.hard = 200000
 | 
			
		||||
					    }
 | 
			
		||||
                    rt.time.hard = 200000 }
 | 
			
		||||
        "flags" = "ifexists|nofail"
 | 
			
		||||
    }
 | 
			
		||||
    libpipewire-module-protocol-native = null
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +62,18 @@ modules = {
 | 
			
		|||
    libpipewire-module-client-node = null
 | 
			
		||||
    libpipewire-module-client-device = null
 | 
			
		||||
    libpipewire-module-portal = null
 | 
			
		||||
    libpipewire-module-access = { "#args" = { access.allowed = @media_session_path@ access.force = flatpak" } }
 | 
			
		||||
    libpipewire-module-access = {
 | 
			
		||||
        "#args" = {
 | 
			
		||||
	            # access.allowed to list an array of paths of allowed
 | 
			
		||||
		    # apps.
 | 
			
		||||
                    access.allowed = [
 | 
			
		||||
		          @media_session_path@
 | 
			
		||||
	            ]
 | 
			
		||||
		    # anything not in the above lists gets assigned the
 | 
			
		||||
		    # access.force permission.
 | 
			
		||||
                    access.force = flatpak
 | 
			
		||||
                  }
 | 
			
		||||
    }
 | 
			
		||||
    libpipewire-module-adapter = null
 | 
			
		||||
    libpipewire-module-link-factory = null
 | 
			
		||||
    libpipewire-module-session-manager = null
 | 
			
		||||
| 
						 | 
				
			
			@ -84,7 +95,8 @@ objects = {
 | 
			
		|||
 | 
			
		||||
    # A default dummy driver. This handles nodes marked with the "node.always-driver"
 | 
			
		||||
    # property when no other driver is currently active. JACK clients need this.
 | 
			
		||||
    spa-node-factory = { args = { factory.name = support.node.driver
 | 
			
		||||
    spa-node-factory = {
 | 
			
		||||
        args = { factory.name = support.node.driver
 | 
			
		||||
                 node.name = Dummy-Driver
 | 
			
		||||
		 priority.driver = 8000
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,7 @@
 | 
			
		|||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
#include <spa/utils/result.h>
 | 
			
		||||
#include <spa/utils/json.h>
 | 
			
		||||
 | 
			
		||||
#include <pipewire/impl.h>
 | 
			
		||||
#include <pipewire/private.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -62,29 +63,39 @@ struct impl {
 | 
			
		|||
 | 
			
		||||
static int check_cmdline(struct pw_impl_client *client, int pid, const char *str)
 | 
			
		||||
{
 | 
			
		||||
	char path[2048];
 | 
			
		||||
	char path[2048], key[1024];
 | 
			
		||||
	ssize_t len;
 | 
			
		||||
	int fd;
 | 
			
		||||
	int fd, res;
 | 
			
		||||
	struct spa_json it[2];
 | 
			
		||||
 | 
			
		||||
	sprintf(path, "/proc/%u/cmdline", pid);
 | 
			
		||||
 | 
			
		||||
	fd = open(path, O_RDONLY);
 | 
			
		||||
	if (fd < 0)
 | 
			
		||||
		return -errno;
 | 
			
		||||
 | 
			
		||||
	if (fd < 0) {
 | 
			
		||||
		res = -errno;
 | 
			
		||||
		goto exit;
 | 
			
		||||
	}
 | 
			
		||||
	if ((len = read(fd, path, sizeof(path)-1)) < 0) {
 | 
			
		||||
		close(fd);
 | 
			
		||||
		return -errno;
 | 
			
		||||
		res = -errno;
 | 
			
		||||
		goto exit_close;
 | 
			
		||||
	}
 | 
			
		||||
	path[len] = '\0';
 | 
			
		||||
 | 
			
		||||
	if (strcmp(path, str) == 0) {
 | 
			
		||||
		close(fd);
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	spa_json_init(&it[0], str, strlen(str));
 | 
			
		||||
	if ((res = spa_json_enter_array(&it[0], &it[1])) <= 0)
 | 
			
		||||
		goto exit_close;
 | 
			
		||||
 | 
			
		||||
	while (spa_json_get_string(&it[1], key, sizeof(key)) > 0) {
 | 
			
		||||
		if (strcmp(path, key) == 0) {
 | 
			
		||||
			res = 1;
 | 
			
		||||
			goto exit_close;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	res = 0;
 | 
			
		||||
exit_close:
 | 
			
		||||
	close(fd);
 | 
			
		||||
	return 0;
 | 
			
		||||
exit:
 | 
			
		||||
	return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int check_flatpak(struct pw_impl_client *client, int pid)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue