Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
ACL: reduce fields in the grid - merge streaming and DVR flags into c…
…ombo
  • Loading branch information
perexg committed Dec 14, 2016
1 parent cb10625 commit 8b33bda
Show file tree
Hide file tree
Showing 3 changed files with 167 additions and 72 deletions.
174 changes: 118 additions & 56 deletions src/access.c
Expand Up @@ -1488,6 +1488,103 @@ access_entry_class_change_set ( void *obj, const void *p )
return idnode_slist_set(obj, access_entry_class_change_slist, p);
}


static idnode_slist_t access_entry_class_streaming_slist[] = {
{
.id = "basic",
.name = N_("Basic"),
.off = offsetof(access_entry_t, ae_streaming),
},
{
.id = "advanced",
.name = N_("Advanced"),
.off = offsetof(access_entry_t, ae_adv_streaming),
},
{
.id = "htsp",
.name = N_("HTSP"),
.off = offsetof(access_entry_t, ae_htsp_streaming),
},
{}
};

static htsmsg_t *
access_entry_class_streaming_enum ( void *obj, const char *lang )
{
return idnode_slist_enum(obj, access_entry_class_streaming_slist, lang);
}

static const void *
access_entry_class_streaming_get ( void *obj )
{
return idnode_slist_get(obj, access_entry_class_streaming_slist);
}

static char *
access_entry_class_streaming_rend ( void *obj, const char *lang )
{
return idnode_slist_rend(obj, access_entry_class_streaming_slist, lang);
}

static int
access_entry_class_streaming_set ( void *obj, const void *p )
{
return idnode_slist_set(obj, access_entry_class_streaming_slist, p);
}

static idnode_slist_t access_entry_class_dvr_slist[] = {
{
.id = "basic",
.name = N_("Basic"),
.off = offsetof(access_entry_t, ae_dvr),
},
{
.id = "htsp",
.name = N_("HTSP"),
.off = offsetof(access_entry_t, ae_htsp_dvr),
},
{
.id = "all",
.name = N_("View all"),
.off = offsetof(access_entry_t, ae_all_dvr),
},
{
.id = "all_rw",
.name = N_("Manage all"),
.off = offsetof(access_entry_t, ae_all_rw_dvr),
},
{
.id = "failed",
.name = N_("Failed view"),
.off = offsetof(access_entry_t, ae_failed_dvr),
},
{}
};

static htsmsg_t *
access_entry_class_dvr_enum ( void *obj, const char *lang )
{
return idnode_slist_enum(obj, access_entry_class_dvr_slist, lang);
}

static const void *
access_entry_class_dvr_get ( void *obj )
{
return idnode_slist_get(obj, access_entry_class_dvr_slist);
}

static char *
access_entry_class_dvr_rend ( void *obj, const char *lang )
{
return idnode_slist_rend(obj, access_entry_class_dvr_slist, lang);
}

static int
access_entry_class_dvr_set ( void *obj, const void *p )
{
return idnode_slist_set(obj, access_entry_class_dvr_slist, p);
}

CLASS_DOC(access_entry)
PROP_DOC(viewlevel_access_entries)
PROP_DOC(themes)
Expand Down Expand Up @@ -1601,27 +1698,18 @@ const idclass_t access_entry_class = {
.opts = PO_DOC_NLIST | PO_ADVANCED,
},
{
.type = PT_BOOL,
.type = PT_INT,
.islist = 1,
.id = "streaming",
.name = N_("Streaming"),
.desc = N_("Allow/Disallow HTTP streaming."),
.off = offsetof(access_entry_t, ae_streaming),
},
{
.type = PT_BOOL,
.id = "adv_streaming",
.name = N_("Advanced streaming"),
.desc = N_("Allow/Disallow advanced http streaming, "
"e.g, direct service or mux links."),
.off = offsetof(access_entry_t, ae_adv_streaming),
},
{
.type = PT_BOOL,
.id = "htsp_streaming",
.name = N_("HTSP streaming"),
.desc = N_("Allow/Disallow HTSP protocol streaming, "
"e.g Kodi (via pvr.hts) or Movian."),
.off = offsetof(access_entry_t, ae_htsp_streaming),
.desc = N_("Streaming flags, allow/disallow HTTP streaming, "
"advanced HTTP streming (e.g, direct service or mux links), "
"HTSP protocol streaming (e.g, Kodi (via pvr.hts) or Movian."),
.list = access_entry_class_streaming_enum,
.get = access_entry_class_streaming_get,
.set = access_entry_class_streaming_set,
.rend = access_entry_class_streaming_rend,
.opts = PO_DOC_NLIST,
},
{
.type = PT_STR,
Expand All @@ -1638,45 +1726,19 @@ const idclass_t access_entry_class = {
.opts = PO_ADVANCED,
},
{
.type = PT_BOOL,
.type = PT_INT,
.islist = 1,
.id = "dvr",
.name = N_("Video recorder"),
.desc = N_("Allow/Disallow access to video recorder "
"functionality (including Autorecs)."),
.off = offsetof(access_entry_t, ae_dvr),
},
{
.type = PT_BOOL,
.id = "htsp_dvr",
.name = N_("HTSP DVR"),
.desc = N_("Allow/Disallow access to DVR via the HTSP "
"protocol."),
.off = offsetof(access_entry_t, ae_htsp_dvr),
},
{
.type = PT_BOOL,
.id = "all_dvr",
.name = N_("View all DVR entries"),
.desc = N_("Allow/Disallow access to other users DVR entries "
"(read only)."),
.off = offsetof(access_entry_t, ae_all_dvr),
},
{
.type = PT_BOOL,
.id = "all_rw_dvr",
.name = N_("All DVR (rw)"),
.desc = N_("Allow/Disallow read/write access to other users' "
"DVR entries."),
.off = offsetof(access_entry_t, ae_all_rw_dvr),
},
{
.type = PT_BOOL,
.id = "failed_dvr",
.name = N_("Failed DVR"),
.desc = N_("Allow/disallow access to all failed DVR entries."),
.def.i = 1,
.off = offsetof(access_entry_t, ae_failed_dvr),
.opts = PO_EXPERT | PO_HIDDEN,
.desc = N_("Video recorder flags, allow/disallow access to video recorder "
"functionality (including Autorecs), allow/disallow users to "
"view other DVR entries, allow/disallow users to work with "
"DVR entries of other users (remove, edit) etc."),
.list = access_entry_class_dvr_enum,
.get = access_entry_class_dvr_get,
.set = access_entry_class_dvr_set,
.rend = access_entry_class_dvr_rend,
.opts = PO_DOC_NLIST,
},
{
.type = PT_BOOL,
Expand Down
44 changes: 43 additions & 1 deletion src/config.c
Expand Up @@ -1406,7 +1406,48 @@ config_migrate_v23 ( void )
config_migrate_v23_one("pyepg");
}

static void
config_migrate_v24_helper ( const char **list, htsmsg_t *e, const char *name )
{
htsmsg_t *l = htsmsg_create_list();
const char **p = list;
for (p = list; *p; p += 2)
if (htsmsg_get_bool_or_default(e, p[0], 0))
htsmsg_add_str(l, NULL, p[1]);
for (p = list; *p; p += 2)
htsmsg_delete_field(e, p[0]);
htsmsg_add_msg(e, name, l);
}

static void
config_migrate_v24 ( void )
{
htsmsg_t *c, *e;
htsmsg_field_t *f;
static const char *streaming_list[] = {
"streaming", "basic",
"adv_streaming", "advanced",
"htsp_streaming", "htsp",
NULL
};
static const char *dvr_list[] = {
"dvr", "basic",
"htsp_dvr", "htsp",
"all_dvr", "all",
"all_rw_dvr", "all_rw",
"failed_dvr", "failed",
NULL
};
if ((c = hts_settings_load("accesscontrol")) != NULL) {
HTSMSG_FOREACH(f, c) {
if (!(e = htsmsg_field_get_map(f))) continue;
config_migrate_v24_helper(streaming_list, e, "streaming");
config_migrate_v24_helper(dvr_list, e, "dvr");
hts_settings_save(e, "accesscontrol/%s", f->hmf_name);
}
htsmsg_destroy(c);
}
}

/*
* Perform backup
Expand Down Expand Up @@ -1528,7 +1569,8 @@ static const config_migrate_t config_migrate_table[] = {
config_migrate_v20,
config_migrate_v21,
config_migrate_v22,
config_migrate_v23
config_migrate_v23,
config_migrate_v24
};

/*
Expand Down
21 changes: 6 additions & 15 deletions src/webui/static/app/acleditor.js
Expand Up @@ -6,18 +6,14 @@ tvheadend.acleditor = function(panel, index)
{
var list = 'enabled,username,password,prefix,change,' +
'lang,webui,uilevel,uilevel_nochange,admin,' +
'streaming,adv_streaming,htsp_streaming,' +
'profile,conn_limit_type,conn_limit,' +
'dvr,htsp_dvr,all_dvr,all_rw_dvr,' +
'dvr_config,channel_min,channel_max,' +
'streaming,profile,conn_limit_type,conn_limit,' +
'dvr,dvr_config,channel_min,channel_max,' +
'channel_tag_exclude,channel_tag,comment';

var list2 = 'enabled,username,password,prefix,change,' +
'lang,webui,themeui,langui,uilevel,uilevel_nochange,admin,' +
'streaming,adv_streaming,htsp_streaming,' +
'profile,conn_limit_type,conn_limit,' +
'dvr,htsp_dvr,all_dvr,all_rw_dvr,' +
'failed_dvr,htsp_anonymize,dvr_config,' +
'streaming,profile,conn_limit_type,conn_limit,' +
'dvr,htsp_anonymize,dvr_config,' +
'channel_min,channel_max,channel_tag_exclude,' +
'channel_tag,comment';

Expand All @@ -33,13 +29,8 @@ tvheadend.acleditor = function(panel, index)
password: { width: 250 },
prefix: { width: 350 },
change: { width: 350 },
streaming: { width: 110 },
adv_streaming: { width: 200 },
htsp_streaming: { width: 200 },
dvr: { width: 150 },
htsp_dvr: { width: 150 },
all_dvr: { width: 150 },
all_rw_dvr: { width: 150 },
streaming: { width: 350 },
dvr: { width: 350 },
webui: { width: 140 },
admin: { width: 100 },
conn_limit_type:{ width: 160 },
Expand Down

0 comments on commit 8b33bda

Please sign in to comment.