Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
Openfire
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Openfire
Commits
152ad12b
Commit
152ad12b
authored
Nov 17, 2015
by
daryl herzmann
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #377 from sco0ter/utf8
Delete URLUTF8Encoder.java in favor of java.net.URLEncoder.
parents
8d6ef5cc
16e37a53
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
21 additions
and
133 deletions
+21
-133
ClearspaceAuthProvider.java
...esoftware/openfire/clearspace/ClearspaceAuthProvider.java
+3
-1
ClearspaceGroupProvider.java
...software/openfire/clearspace/ClearspaceGroupProvider.java
+2
-1
ClearspaceLockOutProvider.java
...ftware/openfire/clearspace/ClearspaceLockOutProvider.java
+2
-1
ClearspaceManager.java
...g/jivesoftware/openfire/clearspace/ClearspaceManager.java
+7
-4
ClearspaceSecurityAuditProvider.java
.../openfire/clearspace/ClearspaceSecurityAuditProvider.java
+2
-1
ClearspaceUserProvider.java
...esoftware/openfire/clearspace/ClearspaceUserProvider.java
+5
-4
URLUTF8Encoder.java
.../org/jivesoftware/openfire/clearspace/URLUTF8Encoder.java
+0
-121
No files found.
src/java/org/jivesoftware/openfire/clearspace/ClearspaceAuthProvider.java
View file @
152ad12b
...
...
@@ -27,6 +27,8 @@ import org.jivesoftware.openfire.net.SASLAuthentication;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
import
org.xmpp.packet.JID
;
import
java.net.URLEncoder
;
/**
* The ClearspaceAuthProvider uses the PermissionService web service inside of Clearspace
* to retrieve authenticate users. It current version of Clearspace only supports plain authentication.
...
...
@@ -78,7 +80,7 @@ public class ClearspaceAuthProvider implements AuthProvider {
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
String
path
=
URL_PREFIX
+
"authenticate/"
+
username
+
"/"
+
password
;
ClearspaceManager
.
getInstance
().
executeRequest
(
GET
,
path
);
}
catch
(
UnauthorizedException
ue
)
{
...
...
src/java/org/jivesoftware/openfire/clearspace/ClearspaceGroupProvider.java
View file @
152ad12b
...
...
@@ -22,6 +22,7 @@ import static org.jivesoftware.openfire.clearspace.ClearspaceManager.HttpType.GE
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
WSUtils
.
getReturn
;
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
WSUtils
.
parseStringArray
;
import
java.net.URLEncoder
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashMap
;
...
...
@@ -220,7 +221,7 @@ public class ClearspaceGroupProvider extends AbstractGroupProvider {
private
Element
getGroupByName
(
String
name
)
throws
GroupNotFoundException
{
try
{
// Encode potentially non-ASCII characters
name
=
URL
UTF8Encoder
.
encode
(
name
);
name
=
URL
Encoder
.
encode
(
name
,
"UTF-8"
);
String
path
=
URL_PREFIX
+
"socialGroupsByName/"
+
name
;
return
ClearspaceManager
.
getInstance
().
executeRequest
(
GET
,
path
);
...
...
src/java/org/jivesoftware/openfire/clearspace/ClearspaceLockOutProvider.java
View file @
152ad12b
...
...
@@ -21,6 +21,7 @@ package org.jivesoftware.openfire.clearspace;
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
GET
;
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
PUT
;
import
java.net.URLEncoder
;
import
java.util.List
;
import
org.dom4j.Document
;
...
...
@@ -229,7 +230,7 @@ public class ClearspaceLockOutProvider implements LockOutProvider {
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
// Requests the user
String
path
=
USER_URL_PREFIX
+
"users/"
+
username
;
// return the response
...
...
src/java/org/jivesoftware/openfire/clearspace/ClearspaceManager.java
View file @
152ad12b
...
...
@@ -32,6 +32,7 @@ import java.net.NetworkInterface;
import
java.net.Socket
;
import
java.net.SocketException
;
import
java.net.URL
;
import
java.net.URLEncoder
;
import
java.net.UnknownHostException
;
import
java.security.KeyStore
;
import
java.security.cert.X509Certificate
;
...
...
@@ -398,7 +399,7 @@ public class ClearspaceManager extends BasicModule implements ExternalComponentM
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
String
path
=
ClearspaceAuthProvider
.
URL_PREFIX
+
"authenticate/"
+
username
+
"/"
+
password
;
executeRequest
(
GET
,
path
);
return
true
;
...
...
@@ -1080,10 +1081,12 @@ public class ClearspaceManager extends BasicModule implements ExternalComponentM
// Un-escape username.
String
unescapedUsername
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
unescapedUsername
=
URLUTF8Encoder
.
encode
(
unescapedUsername
);
// Gets the user's ID from Clearspace
try
{
// Encode potentially non-ASCII characters
unescapedUsername
=
URLEncoder
.
encode
(
unescapedUsername
,
"UTF-8"
);
String
path
=
ClearspaceUserProvider
.
USER_URL_PREFIX
+
"users/"
+
unescapedUsername
;
Element
element
=
executeRequest
(
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
GET
,
path
);
...
...
@@ -1168,7 +1171,7 @@ public class ClearspaceManager extends BasicModule implements ExternalComponentM
}
try
{
// Encode potentially non-ASCII characters
groupname
=
URL
UTF8Encoder
.
encode
(
groupname
);
groupname
=
URL
Encoder
.
encode
(
groupname
,
"UTF-8"
);
String
path
=
ClearspaceGroupProvider
.
URL_PREFIX
+
"groups/"
+
groupname
;
Element
element
=
executeRequest
(
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
GET
,
path
);
...
...
src/java/org/jivesoftware/openfire/clearspace/ClearspaceSecurityAuditProvider.java
View file @
152ad12b
...
...
@@ -20,6 +20,7 @@ package org.jivesoftware.openfire.clearspace;
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
POST
;
import
java.net.URLEncoder
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -70,7 +71,7 @@ public class ClearspaceSecurityAuditProvider implements SecurityAuditProvider {
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
userE
.
addText
(
username
);
Element
descE
=
rootE
.
addElement
(
"description"
);
if
(
summary
!=
null
)
{
...
...
src/java/org/jivesoftware/openfire/clearspace/ClearspaceUserProvider.java
View file @
152ad12b
...
...
@@ -23,6 +23,7 @@ import static org.jivesoftware.openfire.clearspace.ClearspaceManager.HttpType.GE
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
POST
;
import
static
org
.
jivesoftware
.
openfire
.
clearspace
.
ClearspaceManager
.
HttpType
.
PUT
;
import
java.net.URLEncoder
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
...
...
@@ -116,7 +117,7 @@ public class ClearspaceUserProvider implements UserProvider {
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
usernameE
.
addText
(
username
);
// adds the name if it is not empty
...
...
@@ -455,7 +456,7 @@ public class ClearspaceUserProvider implements UserProvider {
// Escape the username so that it can be used as a JID.
username
=
JID
.
escapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
usernames
.
add
(
username
);
}
}
catch
(
Exception
e
)
{
...
...
@@ -505,7 +506,7 @@ public class ClearspaceUserProvider implements UserProvider {
// Escape the username so that it can be used as a JID.
username
=
JID
.
escapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
usernames
.
add
(
username
);
}
...
...
@@ -646,7 +647,7 @@ public class ClearspaceUserProvider implements UserProvider {
// Un-escape username.
username
=
JID
.
unescapeNode
(
username
);
// Encode potentially non-ASCII characters
username
=
URL
UTF8Encoder
.
encode
(
username
);
username
=
URL
Encoder
.
encode
(
username
,
"UTF-8"
);
// Requests the user
String
path
=
USER_URL_PREFIX
+
"users/"
+
username
;
// return the response
...
...
src/java/org/jivesoftware/openfire/clearspace/URLUTF8Encoder.java
deleted
100644 → 0
View file @
8d6ef5cc
package
org
.
jivesoftware
.
openfire
.
clearspace
;
/**
* Provides a method to encode any string into a URL-safe
* form.
* Non-ASCII characters are first encoded as sequences of
* two or three bytes, using the UTF-8 algorithm, before being
* encoded as %HH escapes.
*
* Created: 17 April 1997
* Author: Bert Bos <bert@w3.org>
*
* URLUTF8Encoder: http://www.w3.org/International/URLUTF8Encoder.java
*
* Copyright © 1997 World Wide Web Consortium, (Massachusetts
* Institute of Technology, European Research Consortium for
* Informatics and Mathematics, Keio University). All Rights Reserved.
* This work is distributed under the W3C® Software License [1] in the
* hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE.
*
* [1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
*/
public
class
URLUTF8Encoder
{
final
static
String
[]
hex
=
{
"%00"
,
"%01"
,
"%02"
,
"%03"
,
"%04"
,
"%05"
,
"%06"
,
"%07"
,
"%08"
,
"%09"
,
"%0a"
,
"%0b"
,
"%0c"
,
"%0d"
,
"%0e"
,
"%0f"
,
"%10"
,
"%11"
,
"%12"
,
"%13"
,
"%14"
,
"%15"
,
"%16"
,
"%17"
,
"%18"
,
"%19"
,
"%1a"
,
"%1b"
,
"%1c"
,
"%1d"
,
"%1e"
,
"%1f"
,
"%20"
,
"%21"
,
"%22"
,
"%23"
,
"%24"
,
"%25"
,
"%26"
,
"%27"
,
"%28"
,
"%29"
,
"%2a"
,
"%2b"
,
"%2c"
,
"%2d"
,
"%2e"
,
"%2f"
,
"%30"
,
"%31"
,
"%32"
,
"%33"
,
"%34"
,
"%35"
,
"%36"
,
"%37"
,
"%38"
,
"%39"
,
"%3a"
,
"%3b"
,
"%3c"
,
"%3d"
,
"%3e"
,
"%3f"
,
"%40"
,
"%41"
,
"%42"
,
"%43"
,
"%44"
,
"%45"
,
"%46"
,
"%47"
,
"%48"
,
"%49"
,
"%4a"
,
"%4b"
,
"%4c"
,
"%4d"
,
"%4e"
,
"%4f"
,
"%50"
,
"%51"
,
"%52"
,
"%53"
,
"%54"
,
"%55"
,
"%56"
,
"%57"
,
"%58"
,
"%59"
,
"%5a"
,
"%5b"
,
"%5c"
,
"%5d"
,
"%5e"
,
"%5f"
,
"%60"
,
"%61"
,
"%62"
,
"%63"
,
"%64"
,
"%65"
,
"%66"
,
"%67"
,
"%68"
,
"%69"
,
"%6a"
,
"%6b"
,
"%6c"
,
"%6d"
,
"%6e"
,
"%6f"
,
"%70"
,
"%71"
,
"%72"
,
"%73"
,
"%74"
,
"%75"
,
"%76"
,
"%77"
,
"%78"
,
"%79"
,
"%7a"
,
"%7b"
,
"%7c"
,
"%7d"
,
"%7e"
,
"%7f"
,
"%80"
,
"%81"
,
"%82"
,
"%83"
,
"%84"
,
"%85"
,
"%86"
,
"%87"
,
"%88"
,
"%89"
,
"%8a"
,
"%8b"
,
"%8c"
,
"%8d"
,
"%8e"
,
"%8f"
,
"%90"
,
"%91"
,
"%92"
,
"%93"
,
"%94"
,
"%95"
,
"%96"
,
"%97"
,
"%98"
,
"%99"
,
"%9a"
,
"%9b"
,
"%9c"
,
"%9d"
,
"%9e"
,
"%9f"
,
"%a0"
,
"%a1"
,
"%a2"
,
"%a3"
,
"%a4"
,
"%a5"
,
"%a6"
,
"%a7"
,
"%a8"
,
"%a9"
,
"%aa"
,
"%ab"
,
"%ac"
,
"%ad"
,
"%ae"
,
"%af"
,
"%b0"
,
"%b1"
,
"%b2"
,
"%b3"
,
"%b4"
,
"%b5"
,
"%b6"
,
"%b7"
,
"%b8"
,
"%b9"
,
"%ba"
,
"%bb"
,
"%bc"
,
"%bd"
,
"%be"
,
"%bf"
,
"%c0"
,
"%c1"
,
"%c2"
,
"%c3"
,
"%c4"
,
"%c5"
,
"%c6"
,
"%c7"
,
"%c8"
,
"%c9"
,
"%ca"
,
"%cb"
,
"%cc"
,
"%cd"
,
"%ce"
,
"%cf"
,
"%d0"
,
"%d1"
,
"%d2"
,
"%d3"
,
"%d4"
,
"%d5"
,
"%d6"
,
"%d7"
,
"%d8"
,
"%d9"
,
"%da"
,
"%db"
,
"%dc"
,
"%dd"
,
"%de"
,
"%df"
,
"%e0"
,
"%e1"
,
"%e2"
,
"%e3"
,
"%e4"
,
"%e5"
,
"%e6"
,
"%e7"
,
"%e8"
,
"%e9"
,
"%ea"
,
"%eb"
,
"%ec"
,
"%ed"
,
"%ee"
,
"%ef"
,
"%f0"
,
"%f1"
,
"%f2"
,
"%f3"
,
"%f4"
,
"%f5"
,
"%f6"
,
"%f7"
,
"%f8"
,
"%f9"
,
"%fa"
,
"%fb"
,
"%fc"
,
"%fd"
,
"%fe"
,
"%ff"
};
/**
* Encode a string to the "x-www-form-urlencoded" form, enhanced
* with the UTF-8-in-URL proposal. This is what happens:
*
* <ul>
* <li><p>The ASCII characters 'a' through 'z', 'A' through 'Z',
* and '0' through '9' remain the same.
*
* <li><p>The unreserved characters - _ . ! ~ * ' ( ) remain the same.
*
* <li><p>The space character ' ' is converted into a plus sign '+'.
*
* <li><p>All other ASCII characters are converted into the
* 3-character string "%xy", where xy is
* the two-digit hexadecimal representation of the character
* code
*
* <li><p>All non-ASCII characters are encoded in two steps: first
* to a sequence of 2 or 3 bytes, using the UTF-8 algorithm;
* secondly each of these bytes is encoded as "%xx".
* </ul>
*
* @param s The string to be encoded
* @return The encoded string
*/
public
static
String
encode
(
String
s
)
{
StringBuilder
sbuf
=
new
StringBuilder
();
int
len
=
s
.
length
();
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
int
ch
=
s
.
charAt
(
i
);
if
(
'A'
<=
ch
&&
ch
<=
'Z'
)
{
// 'A'..'Z'
sbuf
.
append
((
char
)
ch
);
}
else
if
(
'a'
<=
ch
&&
ch
<=
'z'
)
{
// 'a'..'z'
sbuf
.
append
((
char
)
ch
);
}
else
if
(
'0'
<=
ch
&&
ch
<=
'9'
)
{
// '0'..'9'
sbuf
.
append
((
char
)
ch
);
}
else
if
(
ch
==
' '
)
{
// space
sbuf
.
append
(
'+'
);
}
else
if
(
ch
==
'-'
||
ch
==
'_'
// unreserved
||
ch
==
'.'
||
ch
==
'!'
||
ch
==
'~'
||
ch
==
'*'
||
ch
==
'\''
||
ch
==
'('
||
ch
==
')'
)
{
sbuf
.
append
((
char
)
ch
);
}
else
if
(
ch
<=
0x007f
)
{
// other ASCII
sbuf
.
append
(
hex
[
ch
]);
}
else
if
(
ch
<=
0x07FF
)
{
// non-ASCII <= 0x7FF
sbuf
.
append
(
hex
[
0xc0
|
(
ch
>>
6
)]);
sbuf
.
append
(
hex
[
0x80
|
(
ch
&
0x3F
)]);
}
else
{
// 0x7FF < ch <= 0xFFFF
sbuf
.
append
(
hex
[
0xe0
|
(
ch
>>
12
)]);
sbuf
.
append
(
hex
[
0x80
|
((
ch
>>
6
)
&
0x3F
)]);
sbuf
.
append
(
hex
[
0x80
|
(
ch
&
0x3F
)]);
}
}
return
sbuf
.
toString
();
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment