Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Apache RocketMQ
Rocketmq
提交
2baae144
R
Rocketmq
项目概览
Apache RocketMQ
/
Rocketmq
上一次同步 大约 3 年
通知
267
Star
16139
Fork
68
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rocketmq
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
2baae144
编写于
9月 06, 2021
作者:
8
844392610
2
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve performance of expandIP, and readable
上级
34c34549
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
31 addition
and
54 deletion
+31
-54
acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java
...rc/main/java/org/apache/rocketmq/acl/common/AclUtils.java
+17
-47
acl/src/test/java/org/apache/rocketmq/acl/common/AclUtilsTest.java
...est/java/org/apache/rocketmq/acl/common/AclUtilsTest.java
+14
-7
未找到文件。
acl/src/main/java/org/apache/rocketmq/acl/common/AclUtils.java
浏览文件 @
2baae144
...
...
@@ -206,63 +206,33 @@ public class AclUtils {
}
public
static
String
expandIP
(
String
netaddress
,
int
part
)
{
boolean
compress
=
false
;
int
compressIndex
=
-
1
;
String
[]
strArray
=
StringUtils
.
split
(
netaddress
,
":"
);
ArrayList
<
Integer
>
indexes
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
netaddress
.
length
();
i
++)
{
if
(
netaddress
.
charAt
(
i
)
==
':'
)
{
if
(
indexes
.
size
()
>
0
&&
i
-
indexes
.
get
(
indexes
.
size
()
-
1
)
==
1
)
{
compressIndex
=
i
;
compress
=
true
;
}
indexes
.
add
(
i
);
// expand netaddress
int
separatorCount
=
StringUtils
.
countMatches
(
netaddress
,
":"
);
int
padCount
=
part
-
separatorCount
;
if
(
padCount
>
0
){
StringBuilder
padStr
=
new
StringBuilder
(
":"
);
for
(
int
i
=
0
;
i
<
padCount
;
i
++){
padStr
.
append
(
":"
);
}
netaddress
=
StringUtils
.
replace
(
netaddress
,
"::"
,
padStr
.
toString
());
}
// pad netaddress
String
[]
strArray
=
StringUtils
.
splitPreserveAllTokens
(
netaddress
,
":"
);
for
(
int
i
=
0
;
i
<
strArray
.
length
;
i
++)
{
if
(
strArray
[
i
].
length
()
<
4
)
{
strArray
[
i
]
=
"0000"
.
substring
(
0
,
4
-
strArray
[
i
].
length
())
+
strArray
[
i
]
;
if
(
strArray
[
i
].
length
()
<
4
)
{
strArray
[
i
]
=
StringUtils
.
leftPad
(
strArray
[
i
],
4
,
'0'
)
;
}
}
// output
StringBuilder
sb
=
new
StringBuilder
();
if
(
compress
)
{
int
pos
=
indexes
.
indexOf
(
compressIndex
);
int
index
=
0
;
if
(!
netaddress
.
startsWith
(
":"
))
{
for
(
int
i
=
0
;
i
<
pos
;
i
++)
{
sb
.
append
(
strArray
[
index
]).
append
(
":"
);
index
+=
1
;
}
}
int
zeroNum
=
part
-
strArray
.
length
;
if
(
netaddress
.
endsWith
(
":"
))
{
for
(
int
i
=
0
;
i
<
zeroNum
;
i
++)
{
sb
.
append
(
"0000"
);
if
(
i
!=
zeroNum
-
1
)
{
sb
.
append
(
":"
);
}
}
}
else
{
for
(
int
i
=
0
;
i
<
zeroNum
;
i
++)
{
sb
.
append
(
"0000"
).
append
(
":"
);
}
for
(
int
i
=
index
;
i
<
strArray
.
length
;
i
++)
{
sb
.
append
(
strArray
[
i
]);
if
(
i
!=
strArray
.
length
-
1
)
{
sb
.
append
(
":"
);
}
}
}
}
else
{
for
(
int
i
=
0
;
i
<
strArray
.
length
;
i
++)
{
sb
.
append
(
strArray
[
i
]);
if
(
i
!=
strArray
.
length
-
1
)
{
sb
.
append
(
":"
);
}
}
}
return
sb
.
toString
().
toUpperCase
();
}
...
...
acl/src/test/java/org/apache/rocketmq/acl/common/AclUtilsTest.java
浏览文件 @
2baae144
...
...
@@ -31,10 +31,12 @@ import org.junit.Test;
public
class
AclUtilsTest
{
// strArray[i] = StringUtils.leftPad(strArray[i],4, '0');
@Test
public
void
getAddre
eStrArray
()
{
public
void
getAddre
sses
()
{
String
address
=
"1.1.1.{1,2,3,4}"
;
String
[]
addressArray
=
AclUtils
.
getAddre
eStrArray
(
address
,
"{1,2,3,4}"
);
String
[]
addressArray
=
AclUtils
.
getAddre
sses
(
address
,
"{1,2,3,4}"
);
List
<
String
>
newAddressList
=
new
ArrayList
<>();
for
(
String
a
:
addressArray
)
{
newAddressList
.
add
(
a
);
...
...
@@ -49,7 +51,7 @@ public class AclUtilsTest {
// IPv6 test
String
ipv6Address
=
"1:ac41:9987::bb22:666:{1,2,3,4}"
;
String
[]
ipv6AddressArray
=
AclUtils
.
getAddre
eStrArray
(
ipv6Address
,
"{1,2,3,4}"
);
String
[]
ipv6AddressArray
=
AclUtils
.
getAddre
sses
(
ipv6Address
,
"{1,2,3,4}"
);
List
<
String
>
newIPv6AddressList
=
new
ArrayList
<>();
for
(
String
a
:
ipv6AddressArray
)
{
newIPv6AddressList
.
add
(
a
);
...
...
@@ -181,23 +183,28 @@ public class AclUtilsTest {
public
void
v6ipProcessTest
()
{
String
remoteAddr
=
"5::7:6:1-200:*"
;
String
[]
strArray
=
StringUtils
.
split
(
remoteAddr
,
":"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
,
strArray
,
3
),
"0005:0000:0000:0000:0007:0006"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
),
"0005:0000:0000:0000:0007:0006"
);
// Assert.assertEquals(AclUtils.v6ipProcess(remoteAddr, strArray, 3), "0005:0000:0000:0000:0007:0006");
remoteAddr
=
"5::7:6:1-200"
;
strArray
=
StringUtils
.
split
(
remoteAddr
,
":"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
,
strArray
,
3
),
"0005:0000:0000:0000:0000:0007:0006"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
),
"0005:0000:0000:0000:0000:0007:0006"
);
// Assert.assertEquals(AclUtils.v6ipProcess(remoteAddr, strArray, 3), "0005:0000:0000:0000:0000:0007:0006");
remoteAddr
=
"5::7:6:*"
;
strArray
=
StringUtils
.
split
(
remoteAddr
,
":"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
,
strArray
,
3
),
"0005:0000:0000:0000:0000:0007:0006"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
),
"0005:0000:0000:0000:0000:0007:0006"
);
// Assert.assertEquals(AclUtils.v6ipProcess(remoteAddr, strArray, 3), "0005:0000:0000:0000:0000:0007:0006");
remoteAddr
=
"5:7:6:*"
;
strArray
=
StringUtils
.
split
(
remoteAddr
,
":"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
,
strArray
,
3
),
"0005:0007:0006"
);
Assert
.
assertEquals
(
AclUtils
.
v6ipProcess
(
remoteAddr
),
"0005:0007:0006"
);
// Assert.assertEquals(AclUtils.v6ipProcess(remoteAddr, strArray, 3), "0005:0007:0006");
}
@Test
public
void
expandIPTest
()
{
Assert
.
assertEquals
(
AclUtils
.
expandIP
(
"::"
,
8
),
"0000:0000:0000:0000:0000:0000:0000:0000"
);
Assert
.
assertEquals
(
AclUtils
.
expandIP
(
"::1"
,
8
),
"0000:0000:0000:0000:0000:0000:0000:0001"
);
Assert
.
assertEquals
(
AclUtils
.
expandIP
(
"3::"
,
8
),
"0003:0000:0000:0000:0000:0000:0000:0000"
);
Assert
.
assertEquals
(
AclUtils
.
expandIP
(
"2::2"
,
8
),
"0002:0000:0000:0000:0000:0000:0000:0002"
);
...
...
XianxinMao
@XianxinMao
mentioned in commit
7a6c3740
·
9月 23, 2021
mentioned in commit
7a6c3740
mentioned in commit 7a6c3740c5c5bc6234c3f6eb9101781ab3a4f18d
开关提交列表
XianxinMao
@XianxinMao
mentioned in commit
6358b3c9
·
9月 23, 2021
mentioned in commit
6358b3c9
mentioned in commit 6358b3c9a9ae3b34833d56ad845950bf08b8042a
开关提交列表
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录