wgtpkg-install: Add default permissions
[src/app-framework-main.git] / src / wgtpkg-install.c
index c5c41ea..0122eda 100644 (file)
@@ -1,5 +1,5 @@
 /*
- Copyright (C) 2015-2018 IoT.bzh
+ Copyright (C) 2015-2019 IoT.bzh
 
  author: José Bollo <jose.bollo@iot.bzh>
 
@@ -67,6 +67,10 @@ static const char key_http_port[] = "http-port";
 
 static uint32_t *port_bits = NULL;
 
+static const char *default_permissions[] = {
+       "urn:AGL:token:valid"
+};
+
 /*
  * normalize unit files: remove comments, remove heading blanks,
  * make single lines
@@ -300,7 +304,7 @@ static int for_all_content(const struct wgt_desc *desc, int (*action)(const char
        rc = action(desc->content_src, desc->content_type);
        feat = desc->features;
        while (feat) {
-               if (!strcmp(feat->name, "urn:AGL:widget:provided-unit")) {
+               if (!strcmp(feat->name, FWK_PREFIX"widget:provided-unit")) {
                        src = wgt_info_param(feat, "content.src");
                        type = wgt_info_param(feat, "content.type");
                        rc2 = action(src, type);
@@ -447,7 +451,7 @@ static int install_file_properties(const struct wgt_desc *desc)
        rc = 0;
        feat = desc->features;
        while (feat) {
-               if (!strcmp(feat->name, "urn:AGL:widget:file-properties")) {
+               if (!strcmp(feat->name, FWK_PREFIX"widget:file-properties")) {
                        param = feat->params;
                        while (param) {
                                if (!strcmp(param->value, "executable")) {
@@ -527,6 +531,16 @@ static int install_security(const struct wgt_desc *desc)
                perm = next_usable_permission();
        }
 
+       /* install default permissions */
+       n = (unsigned int)(sizeof default_permissions / sizeof *default_permissions);
+       for (i = 0 ; i < n ; i++) {
+               perm = default_permissions[i];
+               rc = secmgr_permit(perm);
+               INFO("permitting %s %s", perm, rc ? "FAILED!" : "success");
+               if (rc)
+                       goto error2;
+       }
+
        rc = secmgr_install();
        return rc;
 error2:
@@ -541,7 +555,7 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force
        struct wgt_info *ifo;
        const struct wgt_desc *desc;
        char installdir[PATH_MAX];
-       int port, err;
+       int err;
        struct unitconf uconf;
 
        NOTICE("-- INSTALLING widget %s to %s --", wgtfile, root);
@@ -596,13 +610,9 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force
        if (install_file_properties(desc))
                goto error4;
 
-       port = get_port();
-       if (port < 0)
-               goto error4;
-
        uconf.installdir = installdir;
        uconf.icondir = FWK_ICON_DIR;
-       uconf.port = port;
+       uconf.port = get_port;
        if (unit_install(ifo, &uconf))
                goto error4;