From 28440382d35fe8c81e5c881f50b339dd4c1e5d75 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Tue, 12 Apr 2016 19:57:20 -0400 Subject: [PATCH] More skeleton code --- citadel/modules/image/serv_image.c | 35 +++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/citadel/modules/image/serv_image.c b/citadel/modules/image/serv_image.c index 00615a06c..a6a3728bb 100644 --- a/citadel/modules/image/serv_image.c +++ b/citadel/modules/image/serv_image.c @@ -62,9 +62,42 @@ void cmd_dlui(char *cmdbuf) */ void cmd_ului(char *cmdbuf) { + long data_length; + char mimetype[SIZ]; + char username[USERNAME_SIZE]; + if (CtdlAccessCheck(ac_logged_in_or_guest)) return; - cprintf("500 FIXME not finished\n"); + if ( (num_parms(cmdbuf) < 2) || (num_parms(cmdbuf) > 3) ) + { + cprintf("%d Usage error.\n", ERROR + ILLEGAL_VALUE); + return; + } + + data_length = extract_long(cmdbuf, 0); + extract_token(mimetype, cmdbuf, 1, '|', sizeof mimetype); + extract_token(username, cmdbuf, 2, '|', sizeof username); + + if (data_length < 20) { + cprintf("%d That's an awfully small file. Try again.\n", ERROR + ILLEGAL_VALUE); + return; + } + + if (strncasecmp(mimetype, "image/", 6)) { + cprintf("%d Only image files are permitted.\n", ERROR + ILLEGAL_VALUE); + return; + } + + if (IsEmptyStr(username)) { + safestrncpy(username, CC->curr_user, sizeof username); + } + + // Normal users can only change their own photo + if ( (strcasecmp(username, CC->curr_user)) && (CC->user.axlevel < AxAideU) && (!CC->internal_pgm) ) { + cprintf("%d Higher access required to change another user's photo.\n", ERROR + HIGHER_ACCESS_REQUIRED); + } + + cprintf("500 nope not yet, I am %s , modifying %s , data length is %ld\n", CC->curr_user, username, data_length); } -- 2.30.2