diff options
author | Badlop <badlop@process-one.net> | 2013-02-05 16:19:23 +0100 |
---|---|---|
committer | Badlop <badlop@process-one.net> | 2013-02-05 16:20:14 +0100 |
commit | 3f939314093eb707456a6c869ab5084b65c6ff1d (patch) | |
tree | 887b6c3dd85ca9a47fd2194550d0819137ccf9f5 /src/mod_muc/mod_muc_log.erl | |
parent | Fix issue with ejabberd_xmlrpc user auth and SCRAM (diff) |
New mod_muc_log option file_permissions (EJAB-1588)
Diffstat (limited to '')
-rw-r--r-- | src/mod_muc/mod_muc_log.erl | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/mod_muc/mod_muc_log.erl b/src/mod_muc/mod_muc_log.erl index c6eb783e4..27f1340dc 100644 --- a/src/mod_muc/mod_muc_log.erl +++ b/src/mod_muc/mod_muc_log.erl @@ -60,6 +60,7 @@ dir_type, dir_name, file_format, + file_permissions, css_file, access, lang, @@ -123,6 +124,7 @@ init([Host, Opts]) -> DirType = gen_mod:get_opt(dirtype, Opts, subdirs), DirName = gen_mod:get_opt(dirname, Opts, room_jid), FileFormat = gen_mod:get_opt(file_format, Opts, html), % Allowed values: html|plaintext + FilePermissions = gen_mod:get_opt(file_permissions, Opts, {644, 33}), CSSFile = gen_mod:get_opt(cssfile, Opts, false), AccessLog = gen_mod:get_opt(access_log, Opts, muc_admin), Timezone = gen_mod:get_opt(timezone, Opts, local), @@ -141,6 +143,7 @@ init([Host, Opts]) -> dir_type = DirType, dir_name = DirName, file_format = FileFormat, + file_permissions = FilePermissions, css_file = CSSFile, access = AccessLog, lang = Lang, @@ -318,11 +321,16 @@ htmlize_nick(Nick1, html) -> htmlize_nick(Nick1, plaintext) -> htmlize(?PLAINTEXT_IN++Nick1++?PLAINTEXT_OUT, plaintext). +set_filemode(Fn, {FileMode, FileGroup}) -> + ok = file:change_mode(Fn, list_to_integer(integer_to_list(FileMode), 8)), + ok = file:change_group(Fn, FileGroup). + add_message_to_log(Nick1, Message, RoomJID, Opts, State) -> #logstate{out_dir = OutDir, dir_type = DirType, dir_name = DirName, file_format = FileFormat, + file_permissions = FilePermissions, css_file = CSSFile, lang = Lang, timezone = Timezone, @@ -346,6 +354,8 @@ add_message_to_log(Nick1, Message, RoomJID, Opts, State) -> {error, enoent} -> make_dir_rec(Fd), {ok, F} = file:open(Fn, [append]), + catch set_filemode(Fn, FilePermissions), + Datestring = get_dateweek(Date, Lang), TimeStampYesterday = get_timestamp_daydiff(TimeStamp, -1), @@ -499,8 +509,9 @@ make_dir_rec(Dir) -> {error, enoent} -> DirS = filename:split(Dir), DirR = lists:sublist(DirS, length(DirS)-1), - make_dir_rec(filename:join(DirR)), - file:make_dir(Dir) + ok = make_dir_rec(filename:join(DirR)), + ok = file:make_dir(Dir), + ok = file:change_mode(Dir, 8#00755) % -rwxr-xr-x end. |