1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
diff --git a/src/murmur/Messages.cpp b/src/murmur/Messages.cpp
index 529f287..43ab378 100644
--- a/src/murmur/Messages.cpp
+++ b/src/murmur/Messages.cpp
@@ -1326,19 +1326,70 @@ void Server::msgACL(ServerUser *uSource, MumbleProto::ACL &msg) {
QHash<QString, QSet<int> > hOldTemp;
+ log(uSource, QString("Updating ACL in channel %1").arg(*c));
+ log("old groups and acl follows:");
+ log("old groups:");
+
foreach(g, c->qhGroups) {
+ log(QString("group: ") + g->qsName + " have following users: ");
+ int m;
+ QString member_list;
+ foreach(m, g->members())
+ {
+ member_list += getUserName(m);
+ member_list += ", ";
+ }
+ member_list.remove(member_list.length() -2, 2);
+ log(member_list);
+
hOldTemp.insert(g->qsName, g->qsTemporary);
delete g;
}
+ log("old acls:");
+
+ QString acls_string;
+
foreach(a, c->qlACL)
+ {
+ acls_string += a->qsGroup;
+ acls_string += "|";
+ acls_string += getUserName(a->iUserId);
+ acls_string += ":";
+ QString tmp;
+ acls_string += tmp.sprintf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", a->pAllow.testFlag(ChanACL::None)?"None,":"", a->pAllow.testFlag(ChanACL::Write)?"Write,":"", \
+ a->pAllow.testFlag(ChanACL::Traverse)?"Traverse,":"", a->pAllow.testFlag(ChanACL::Enter)?"Enter,":"", a->pAllow.testFlag(ChanACL::Speak)?"Speak,":"", \
+ a->pAllow.testFlag(ChanACL::MuteDeafen)?"Mute,":"", a->pAllow.testFlag(ChanACL::Move)?"Move,":"", a->pAllow.testFlag(ChanACL::MakeChannel)?"MakeChannel,":"", \
+ a->pAllow.testFlag(ChanACL::LinkChannel)?"LinkChannel,":"", a->pAllow.testFlag(ChanACL::Whisper)?"Whisper,":"", a->pAllow.testFlag(ChanACL::TextMessage)?"TextMessage,":"", \
+ a->pAllow.testFlag(ChanACL::MakeTempChannel)?"MakeTempChannel,":"", a->pAllow.testFlag(ChanACL::Kick)?"Kick,":"", a->pAllow.testFlag(ChanACL::Ban)?"Ban,":"", \
+ a->pAllow.testFlag(ChanACL::Register)?"Register,":"", a->pAllow.testFlag(ChanACL::SelfRegister)?"SelfRegister,":"");
+ acls_string.remove(acls_string.length() -1, 1);
+ acls_string += "_";
+ acls_string += tmp.sprintf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", a->pDeny.testFlag(ChanACL::None)?"None,":"", a->pDeny.testFlag(ChanACL::Write)?"Write,":"", \
+ a->pDeny.testFlag(ChanACL::Traverse)?"Traverse,":"", a->pDeny.testFlag(ChanACL::Enter)?"Enter,":"", a->pDeny.testFlag(ChanACL::Speak)?"Speak,":"", \
+ a->pDeny.testFlag(ChanACL::MuteDeafen)?"Mute,":"", a->pDeny.testFlag(ChanACL::Move)?"Move,":"", a->pDeny.testFlag(ChanACL::MakeChannel)?"MakeChannel,":"", \
+ a->pDeny.testFlag(ChanACL::LinkChannel)?"LinkChannel,":"", a->pDeny.testFlag(ChanACL::Whisper)?"Whisper,":"", a->pDeny.testFlag(ChanACL::TextMessage)?"TextMessage,":"", \
+ a->pDeny.testFlag(ChanACL::MakeTempChannel)?"MakeTempChannel,":"", a->pDeny.testFlag(ChanACL::Kick)?"Kick,":"", a->pDeny.testFlag(ChanACL::Ban)?"Ban,":"", \
+ a->pDeny.testFlag(ChanACL::Register)?"Register,":"", a->pDeny.testFlag(ChanACL::SelfRegister)?"SelfRegister,":"");
+ acls_string.remove(acls_string.length() -1, 1);
+ acls_string += "; ";
+
+
delete a;
+ }
+ acls_string.remove(acls_string.length() -2, 2);
+ log(acls_string);
+
+ acls_string.clear();
c->qhGroups.clear();
c->qlACL.clear();
c->bInheritACL = msg.inherit_acls();
+ log("new groups and acl follows:");
+ log("new groups:");
+
for (int i = 0; i < msg.groups_size(); ++i) {
const MumbleProto::ACL_ChanGroup &group = msg.groups(i);
g = new Group(c, u8(group.name()));
@@ -1350,9 +1401,23 @@ void Server::msgACL(ServerUser *uSource, MumbleProto::ACL &msg) {
for (int j = 0; j < group.remove_size(); ++j)
if (!getUserName(group.remove(j)).isEmpty())
g->qsRemove << group.remove(j);
+
+ log(QString("group: ") + g->qsName + " have following users: ");
+ int m;
+ QString member_list;
+ foreach(m, g->members())
+ {
+ member_list += getUserName(m);
+ member_list += ", ";
+ }
+ member_list.remove(member_list.length() -2, 2);
+ log(member_list);
+
g->qsTemporary = hOldTemp.value(g->qsName);
}
+ log("new acls:");
+
for (int i = 0; i < msg.acls_size(); ++i) {
const MumbleProto::ACL_ChanACL &mpacl = msg.acls(i);
if (mpacl.has_user_id() && getUserName(mpacl.user_id()).isEmpty())
@@ -1367,7 +1432,32 @@ void Server::msgACL(ServerUser *uSource, MumbleProto::ACL &msg) {
a->qsGroup = u8(mpacl.group());
a->pDeny = static_cast<ChanACL::Permissions>(mpacl.deny()) & ChanACL::All;
a->pAllow = static_cast<ChanACL::Permissions>(mpacl.grant()) & ChanACL::All;
+ //TODO: log acls
+ acls_string += a->qsGroup;
+ acls_string += "|";
+ acls_string += getUserName(a->iUserId);
+ acls_string += ":";
+ QString tmp;
+ acls_string += tmp.sprintf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", a->pAllow.testFlag(ChanACL::None)?"None,":"", a->pAllow.testFlag(ChanACL::Write)?"Write,":"", \
+ a->pAllow.testFlag(ChanACL::Traverse)?"Traverse,":"", a->pAllow.testFlag(ChanACL::Enter)?"Enter,":"", a->pAllow.testFlag(ChanACL::Speak)?"Speak,":"", \
+ a->pAllow.testFlag(ChanACL::MuteDeafen)?"Mute,":"", a->pAllow.testFlag(ChanACL::Move)?"Move,":"", a->pAllow.testFlag(ChanACL::MakeChannel)?"MakeChannel,":"", \
+ a->pAllow.testFlag(ChanACL::LinkChannel)?"LinkChannel,":"", a->pAllow.testFlag(ChanACL::Whisper)?"Whisper,":"", a->pAllow.testFlag(ChanACL::TextMessage)?"TextMessage,":"", \
+ a->pAllow.testFlag(ChanACL::MakeTempChannel)?"MakeTempChannel,":"", a->pAllow.testFlag(ChanACL::Kick)?"Kick,":"", a->pAllow.testFlag(ChanACL::Ban)?"Ban,":"", \
+ a->pAllow.testFlag(ChanACL::Register)?"Register,":"", a->pAllow.testFlag(ChanACL::SelfRegister)?"SelfRegister,":"");
+ acls_string.remove(acls_string.length() -1, 1);
+ acls_string += "_";
+ acls_string += tmp.sprintf("%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", a->pDeny.testFlag(ChanACL::None)?"None,":"", a->pDeny.testFlag(ChanACL::Write)?"Write,":"", \
+ a->pDeny.testFlag(ChanACL::Traverse)?"Traverse,":"", a->pDeny.testFlag(ChanACL::Enter)?"Enter,":"", a->pDeny.testFlag(ChanACL::Speak)?"Speak,":"", \
+ a->pDeny.testFlag(ChanACL::MuteDeafen)?"Mute,":"", a->pDeny.testFlag(ChanACL::Move)?"Move,":"", a->pDeny.testFlag(ChanACL::MakeChannel)?"MakeChannel,":"", \
+ a->pDeny.testFlag(ChanACL::LinkChannel)?"LinkChannel,":"", a->pDeny.testFlag(ChanACL::Whisper)?"Whisper,":"", a->pDeny.testFlag(ChanACL::TextMessage)?"TextMessage,":"", \
+ a->pDeny.testFlag(ChanACL::MakeTempChannel)?"MakeTempChannel,":"", a->pDeny.testFlag(ChanACL::Kick)?"Kick,":"", a->pDeny.testFlag(ChanACL::Ban)?"Ban,":"", \
+ a->pDeny.testFlag(ChanACL::Register)?"Register,":"", a->pDeny.testFlag(ChanACL::SelfRegister)?"SelfRegister,":"");
+ acls_string.remove(acls_string.length() -1, 1);
+ acls_string += ", ";
}
+ acls_string.remove(acls_string.length() -2, 2);
+ log(acls_string);
+
}
clearACLCache();
|