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
4c2804b6
Commit
4c2804b6
authored
Feb 03, 2015
by
Roman S
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
REST API plugin version 1.0.0
parent
475130eb
Changes
37
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
7500 additions
and
2146 deletions
+7500
-2146
changelog.html
src/plugins/restAPI/changelog.html
+59
-53
plugin.xml
src/plugins/restAPI/plugin.xml
+21
-21
readme.html
src/plugins/restAPI/readme.html
+3752
-1618
AuthFilter.java
...ava/org/jivesoftware/openfire/plugin/rest/AuthFilter.java
+112
-107
MUCRoomController.java
...re/openfire/plugin/rest/controller/MUCRoomController.java
+505
-0
UserServiceController.java
...penfire/plugin/rest/controller/UserServiceController.java
+495
-0
UserServiceLegacyController.java
...e/plugin/rest/controller/UserServiceLegacyController.java
+379
-0
PropertyDAO.java
...rg/jivesoftware/openfire/plugin/rest/dao/PropertyDAO.java
+67
-0
MUCChannelType.java
...esoftware/openfire/plugin/rest/entity/MUCChannelType.java
+9
-0
MUCRoomEntities.java
...software/openfire/plugin/rest/entity/MUCRoomEntities.java
+27
-0
MUCRoomEntity.java
...vesoftware/openfire/plugin/rest/entity/MUCRoomEntity.java
+282
-0
ParticipantEntities.java
...ware/openfire/plugin/rest/entity/ParticipantEntities.java
+27
-0
ParticipantEntity.java
...ftware/openfire/plugin/rest/entity/ParticipantEntity.java
+43
-0
RosterEntities.java
...esoftware/openfire/plugin/rest/entity/RosterEntities.java
+54
-0
RosterItemEntity.java
...oftware/openfire/plugin/rest/entity/RosterItemEntity.java
+132
-0
UserEntities.java
...ivesoftware/openfire/plugin/rest/entity/UserEntities.java
+54
-0
UserEntity.java
.../jivesoftware/openfire/plugin/rest/entity/UserEntity.java
+154
-0
UserGroupsEntity.java
...oftware/openfire/plugin/rest/entity/UserGroupsEntity.java
+54
-0
UserProperty.java
...ivesoftware/openfire/plugin/rest/entity/UserProperty.java
+76
-0
ExceptionType.java
...ftware/openfire/plugin/rest/exceptions/ExceptionType.java
+39
-18
RESTExceptionMapper.java
.../openfire/plugin/rest/exceptions/RESTExceptionMapper.java
+42
-44
JerseyWrapper.java
...esoftware/openfire/plugin/rest/service/JerseyWrapper.java
+101
-89
MUCRoomAdminsService.java
...re/openfire/plugin/rest/service/MUCRoomAdminsService.java
+34
-0
MUCRoomMembersService.java
...e/openfire/plugin/rest/service/MUCRoomMembersService.java
+34
-0
MUCRoomOutcastsService.java
.../openfire/plugin/rest/service/MUCRoomOutcastsService.java
+34
-0
MUCRoomOwnersService.java
...re/openfire/plugin/rest/service/MUCRoomOwnersService.java
+34
-0
MUCRoomService.java
...software/openfire/plugin/rest/service/MUCRoomService.java
+74
-0
RestAPIService.java
...software/openfire/plugin/rest/service/RestAPIService.java
+61
-61
UserGroupService.java
...ftware/openfire/plugin/rest/service/UserGroupService.java
+46
-0
UserLockoutService.java
...ware/openfire/plugin/rest/service/UserLockoutService.java
+36
-0
UserRosterService.java
...tware/openfire/plugin/rest/service/UserRosterService.java
+92
-0
UserService.java
...ivesoftware/openfire/plugin/rest/service/UserService.java
+64
-0
UserServiceLegacy.java
...tware/openfire/plugin/rest/service/UserServiceLegacy.java
+190
-0
MUCRoomUtils.java
...jivesoftware/openfire/plugin/rest/utils/MUCRoomUtils.java
+52
-0
UserUtils.java
...rg/jivesoftware/openfire/plugin/rest/utils/UserUtils.java
+112
-0
web-custom.xml
src/plugins/restAPI/src/web/WEB-INF/web-custom.xml
+16
-15
rest-api.jsp
src/plugins/restAPI/src/web/rest-api.jsp
+137
-120
No files found.
src/plugins/restAPI/changelog.html
View file @
4c2804b6
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<html>
<head>
<head>
<title>
REST API Plugin Changelog
</title>
<title>
REST API Plugin Changelog
</title>
<style
type=
"text/css"
>
<style
type=
"text/css"
>
BODY
{
BODY
{
font-size
:
100%
;
font-size
:
100%
;
}
}
BODY
,
TD
,
TH
{
BODY
,
TD
,
TH
{
font-family
:
tahoma
,
verdana
,
arial
,
helvetica
,
sans-serif
;
font-family
:
tahoma
,
verdana
,
arial
,
helvetica
,
sans-serif
;
font-size
:
0.8em
;
font-size
:
0.8em
;
}
}
H2
{
H2
{
font-size
:
10pt
;
font-size
:
10pt
;
font-weight
:
bold
;
font-weight
:
bold
;
padding-left
:
1em
;
padding-left
:
1em
;
}
}
A
:hover
{
A
:hover
{
text-decoration
:
none
;
text-decoration
:
none
;
}
}
H1
{
H1
{
font-family
:
tahoma
,
arial
,
helvetica
,
sans-serif
;
font-family
:
tahoma
,
arial
,
helvetica
,
sans-serif
;
font-size
:
1.4em
;
font-size
:
1.4em
;
font-weight
:
bold
;
font-weight
:
bold
;
border-bottom
:
1px
#ccc
solid
;
border-bottom
:
1px
#ccc
solid
;
padding-bottom
:
2px
;
padding-bottom
:
2px
;
}
}
TT
{
TT
{
font-family
:
courier
new
;
font-family
:
courier
new
;
font-weight
:
bold
;
font-weight
:
bold
;
color
:
#060
;
color
:
#060
;
}
}
PRE
{
PRE
{
font-family
:
courier
new
;
font-family
:
courier
new
;
font-size
:
100%
;
font-size
:
100%
;
}
}
</style>
</style>
</head>
</head>
<body>
<body>
<h1>
<h1>
REST API Plugin Changelog
REST API Plugin Changelog
</h1>
</h1>
<p><b>
0.1.0
</b>
-- November 14th, 2014
</p>
<p><b>
1.0.0
</b>
-- February 3rd, 2015
</p>
<ul>
<ul>
<li>
Initial release of REST API Plugin with possibility to manage system properties.
</li>
<li>
UserService plugin and MUC Service plugin are merged to the REST API plugin.
</li>
</ul>
<li>
Extended REST API with JSON data format.
</li>
</ul>
</body>
</html>
<p><b>
0.1.0
</b>
-- November 14th, 2014
</p>
<ul>
<li>
Initial release of REST API Plugin with possibility to manage system properties.
</li>
</ul>
</body>
</html>
src/plugins/restAPI/plugin.xml
View file @
4c2804b6
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<plugin>
<plugin>
<class>
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
</class>
<class>
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
</class>
<name>
REST API
</name>
<name>
REST API
</name>
<description>
Allows administration over a RESTful API.
</description>
<description>
Allows administration over a RESTful API.
</description>
<author>
Roman Soldatow
</author>
<author>
Roman Soldatow
</author>
<version>
0.1.0
</version>
<version>
1.0.0
</version>
<date>
11/14/2014
</date>
<date>
02/03/2015
</date>
<minServerVersion>
3.9.0
</minServerVersion>
<minServerVersion>
3.9.0
</minServerVersion>
<adminconsole>
<adminconsole>
<tab
id=
"tab-server"
>
<tab
id=
"tab-server"
>
<sidebar
id=
"sidebar-server-settings"
>
<sidebar
id=
"sidebar-server-settings"
>
<item
id=
"rest-api"
name=
"REST API"
url=
"rest-api.jsp"
<item
id=
"rest-api"
name=
"REST API"
url=
"rest-api.jsp"
description=
"Click to manage the service that allows to configure the Openfire over a RESTFul API"
/>
description=
"Click to manage the service that allows to configure the Openfire over a RESTFul API"
/>
</sidebar>
</sidebar>
</tab>
</tab>
</adminconsole>
</adminconsole>
</plugin>
</plugin>
src/plugins/restAPI/readme.html
View file @
4c2804b6
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/AuthFilter.java
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
;
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.ws.rs.WebApplicationException
;
import
javax.ws.rs.WebApplicationException
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.Response.Status
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.XMPPServer
;
import
org.jivesoftware.openfire.XMPPServer
;
import
org.jivesoftware.openfire.admin.AdminManager
;
import
org.jivesoftware.openfire.admin.AdminManager
;
import
org.jivesoftware.openfire.auth.AuthFactory
;
import
org.jivesoftware.openfire.auth.AuthFactory
;
import
org.jivesoftware.openfire.auth.ConnectionException
;
import
org.jivesoftware.openfire.auth.ConnectionException
;
import
org.jivesoftware.openfire.auth.InternalUnauthenticatedException
;
import
org.jivesoftware.openfire.auth.InternalUnauthenticatedException
;
import
org.jivesoftware.openfire.auth.UnauthorizedException
;
import
org.jivesoftware.openfire.auth.UnauthorizedException
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
com.sun.jersey.spi.container.ContainerRequest
;
import
com.sun.jersey.spi.container.ContainerRequest
;
import
com.sun.jersey.spi.container.ContainerRequestFilter
;
import
com.sun.jersey.spi.container.ContainerRequestFilter
;
/**
/**
* The Class AuthFilter.
* The Class AuthFilter.
*/
*/
public
class
AuthFilter
implements
ContainerRequestFilter
{
public
class
AuthFilter
implements
ContainerRequestFilter
{
/** The log. */
/** The log. */
private
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
AuthFilter
.
class
);
private
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
AuthFilter
.
class
);
/** The http request. */
/** The http request. */
@Context
@Context
private
HttpServletRequest
httpRequest
;
private
HttpServletRequest
httpRequest
;
/** The plugin. */
/** The plugin. */
private
RESTServicePlugin
plugin
=
(
RESTServicePlugin
)
XMPPServer
.
getInstance
().
getPluginManager
()
private
RESTServicePlugin
plugin
=
(
RESTServicePlugin
)
XMPPServer
.
getInstance
().
getPluginManager
()
.
getPlugin
(
"restapi"
);
.
getPlugin
(
"restapi"
);
/*
/*
* (non-Javadoc)
* (non-Javadoc)
*
*
* @see
* @see
* com.sun.jersey.spi.container.ContainerRequestFilter#filter(com.sun.jersey
* com.sun.jersey.spi.container.ContainerRequestFilter#filter(com.sun.jersey
* .spi.container.ContainerRequest)
* .spi.container.ContainerRequest)
*/
*/
@Override
@Override
public
ContainerRequest
filter
(
ContainerRequest
containerRequest
)
throws
WebApplicationException
{
public
ContainerRequest
filter
(
ContainerRequest
containerRequest
)
throws
WebApplicationException
{
if
(!
plugin
.
isEnabled
())
{
if
(!
plugin
.
isEnabled
())
{
throw
new
WebApplicationException
(
Status
.
FORBIDDEN
);
throw
new
WebApplicationException
(
Status
.
FORBIDDEN
);
}
}
if
(!
plugin
.
getAllowedIPs
().
isEmpty
())
{
// To be backwards compatible to userservice 1.*
// Get client's IP address
if
(
"restapi/v1/userservice"
.
equals
(
containerRequest
.
getPath
()))
{
String
ipAddress
=
httpRequest
.
getHeader
(
"x-forwarded-for"
);
return
containerRequest
;
if
(
ipAddress
==
null
)
{
}
ipAddress
=
httpRequest
.
getHeader
(
"X_FORWARDED_FOR"
);
if
(
ipAddress
==
null
)
{
if
(!
plugin
.
getAllowedIPs
().
isEmpty
())
{
ipAddress
=
httpRequest
.
getHeader
(
"X-Forward-For"
);
// Get client's IP address
if
(
ipAddress
==
null
)
{
String
ipAddress
=
httpRequest
.
getHeader
(
"x-forwarded-for"
);
ipAddress
=
httpRequest
.
getRemoteAddr
();
if
(
ipAddress
==
null
)
{
}
ipAddress
=
httpRequest
.
getHeader
(
"X_FORWARDED_FOR"
);
}
if
(
ipAddress
==
null
)
{
}
ipAddress
=
httpRequest
.
getHeader
(
"X-Forward-For"
);
if
(!
plugin
.
getAllowedIPs
().
contains
(
ipAddress
))
{
if
(
ipAddress
==
null
)
{
LOG
.
warn
(
"REST API rejected service to IP address: "
+
ipAddress
);
ipAddress
=
httpRequest
.
getRemoteAddr
();
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
}
}
}
}
if
(!
plugin
.
getAllowedIPs
().
contains
(
ipAddress
))
{
// Get the authentification passed in HTTP headers parameters
LOG
.
warn
(
"REST API rejected service to IP address: "
+
ipAddress
);
String
auth
=
containerRequest
.
getHeaderValue
(
"authorization"
);
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
if
(
auth
==
null
)
{
}
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
// Get the authentification passed in HTTP headers parameters
String
auth
=
containerRequest
.
getHeaderValue
(
"authorization"
);
// HTTP Basic Auth or Shared Secret key
if
(
plugin
.
isHttpBasicAuth
())
{
if
(
auth
==
null
)
{
String
[]
usernameAndPassword
=
BasicAuth
.
decode
(
auth
);
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
// If username or password fail
if
(
usernameAndPassword
==
null
||
usernameAndPassword
.
length
!=
2
)
{
// HTTP Basic Auth or Shared Secret key
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
if
(
plugin
.
isHttpBasicAuth
())
{
}
String
[]
usernameAndPassword
=
BasicAuth
.
decode
(
auth
);
boolean
userAdmin
=
AdminManager
.
getInstance
().
isUserAdmin
(
usernameAndPassword
[
0
],
true
);
// If username or password fail
if
(
usernameAndPassword
==
null
||
usernameAndPassword
.
length
!=
2
)
{
if
(!
userAdmin
)
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
}
boolean
userAdmin
=
AdminManager
.
getInstance
().
isUserAdmin
(
usernameAndPassword
[
0
],
true
);
try
{
AuthFactory
.
authenticate
(
usernameAndPassword
[
0
],
usernameAndPassword
[
1
]);
if
(!
userAdmin
)
{
}
catch
(
UnauthorizedException
e
)
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
LOG
.
warn
(
"Wrong HTTP Basic Auth authorization"
,
e
);
}
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
catch
(
ConnectionException
e
)
{
try
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
AuthFactory
.
authenticate
(
usernameAndPassword
[
0
],
usernameAndPassword
[
1
]);
}
catch
(
InternalUnauthenticatedException
e
)
{
}
catch
(
UnauthorizedException
e
)
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
LOG
.
warn
(
"Wrong HTTP Basic Auth authorization"
,
e
);
}
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
else
{
}
catch
(
ConnectionException
e
)
{
if
(!
auth
.
equals
(
plugin
.
getSecret
()))
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
LOG
.
warn
(
"Wrong secret key authorization. Provided key: "
+
auth
);
}
catch
(
InternalUnauthenticatedException
e
)
{
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
}
}
}
else
{
return
containerRequest
;
if
(!
auth
.
equals
(
plugin
.
getSecret
()))
{
}
LOG
.
warn
(
"Wrong secret key authorization. Provided key: "
+
auth
);
}
throw
new
WebApplicationException
(
Status
.
UNAUTHORIZED
);
}
}
return
containerRequest
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/MUCRoomController.java
0 → 100644
View file @
4c2804b6
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/UserServiceController.java
0 → 100644
View file @
4c2804b6
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/controller/UserServiceLegacyController.java
0 → 100644
View file @
4c2804b6
This diff is collapsed.
Click to expand it.
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/dao/PropertyDAO.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
dao
;
import
java.sql.Connection
;
import
java.sql.PreparedStatement
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.database.DbConnectionManager
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ExceptionType
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
/**
* The Class PropertyDAO.
*/
public
class
PropertyDAO
{
/** The Constant LOAD_PROPERTY. */
private
final
static
String
LOAD_PROPERTY
=
"SELECT username FROM ofUserProp WHERE name=? AND propValue=?"
;
/** The Constant LOAD_PROPERTY_BY_KEY. */
private
final
static
String
LOAD_PROPERTY_BY_KEY
=
"SELECT username FROM ofUserProp WHERE name=?"
;
/**
* Gets the username by property key and or value.
*
* @param propertyName
* the property name
* @param propertyValue
* the property value (can be null)
* @return the username by property
* @throws ServiceException
* the service exception
*/
public
static
List
<
String
>
getUsernameByProperty
(
String
propertyName
,
String
propertyValue
)
throws
ServiceException
{
List
<
String
>
usernames
=
new
ArrayList
<
String
>();
Connection
con
=
null
;
PreparedStatement
pstmt
=
null
;
ResultSet
rs
=
null
;
try
{
con
=
DbConnectionManager
.
getConnection
();
// Load property by key and value
if
(
propertyValue
!=
null
)
{
pstmt
=
con
.
prepareStatement
(
LOAD_PROPERTY
);
pstmt
.
setString
(
1
,
propertyName
);
pstmt
.
setString
(
2
,
propertyValue
);
}
else
{
// Load property by key
pstmt
=
con
.
prepareStatement
(
LOAD_PROPERTY_BY_KEY
);
pstmt
.
setString
(
1
,
propertyName
);
}
rs
=
pstmt
.
executeQuery
();
while
(
rs
.
next
())
{
usernames
.
add
(
rs
.
getString
(
1
));
}
}
catch
(
SQLException
sqle
)
{
throw
new
ServiceException
(
"Could not get username by property"
,
propertyName
,
ExceptionType
.
PROPERTY_NOT_FOUND
,
Response
.
Status
.
NOT_FOUND
,
sqle
);
}
finally
{
DbConnectionManager
.
closeConnection
(
rs
,
pstmt
,
con
);
}
return
usernames
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/MUCChannelType.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
public
final
class
MUCChannelType
{
public
static
final
String
PUBLIC
=
"public"
;
public
static
final
String
ALL
=
"all"
;
private
MUCChannelType
()
{
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/MUCRoomEntities.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
@XmlRootElement
(
name
=
"chatRooms"
)
public
class
MUCRoomEntities
{
List
<
MUCRoomEntity
>
mucRooms
;
public
MUCRoomEntities
()
{
}
public
MUCRoomEntities
(
List
<
MUCRoomEntity
>
mucRooms
)
{
this
.
mucRooms
=
mucRooms
;
}
@XmlElement
(
name
=
"chatRoom"
)
public
List
<
MUCRoomEntity
>
getMucRooms
()
{
return
mucRooms
;
}
public
void
setMucRooms
(
List
<
MUCRoomEntity
>
mucRooms
)
{
this
.
mucRooms
=
mucRooms
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/MUCRoomEntity.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.Date
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlElementWrapper
;
import
javax.xml.bind.annotation.XmlRootElement
;
import
javax.xml.bind.annotation.XmlType
;
@XmlRootElement
(
name
=
"chatRoom"
)
@XmlType
(
propOrder
=
{
"roomName"
,
"naturalName"
,
"description"
,
"password"
,
"subject"
,
"creationDate"
,
"modificationDate"
,
"maxUsers"
,
"persistent"
,
"publicRoom"
,
"registrationEnabled"
,
"canAnyoneDiscoverJID"
,
"canOccupantsChangeSubject"
,
"canOccupantsInvite"
,
"canChangeNickname"
,
"logEnabled"
,
"loginRestrictedToNickname"
,
"membersOnly"
,
"moderated"
,
"broadcastPresenceRoles"
,
"owners"
,
"admins"
,
"members"
,
"outcasts"
})
public
class
MUCRoomEntity
{
private
String
roomName
;
private
String
description
;
private
String
password
;
private
String
subject
;
private
String
naturalName
;
private
int
maxUsers
;
private
Date
creationDate
;
private
Date
modificationDate
;
private
boolean
persistent
;
private
boolean
publicRoom
;
private
boolean
registrationEnabled
;
private
boolean
canAnyoneDiscoverJID
;
private
boolean
canOccupantsChangeSubject
;
private
boolean
canOccupantsInvite
;
private
boolean
canChangeNickname
;
private
boolean
logEnabled
;
private
boolean
loginRestrictedToNickname
;
private
boolean
membersOnly
;
private
boolean
moderated
;
private
List
<
String
>
broadcastPresenceRoles
;
private
List
<
String
>
owners
;
private
List
<
String
>
admins
;
private
List
<
String
>
members
;
private
List
<
String
>
outcasts
;
public
MUCRoomEntity
()
{
}
public
MUCRoomEntity
(
String
naturalName
,
String
roomName
,
String
description
)
{
this
.
naturalName
=
naturalName
;
this
.
roomName
=
roomName
;
this
.
description
=
description
;
}
@XmlElement
public
String
getNaturalName
()
{
return
naturalName
;
}
public
void
setNaturalName
(
String
naturalName
)
{
this
.
naturalName
=
naturalName
;
}
@XmlElement
public
String
getRoomName
()
{
return
roomName
;
}
public
void
setRoomName
(
String
roomName
)
{
this
.
roomName
=
roomName
;
}
@XmlElement
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
@XmlElement
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
@XmlElement
public
String
getSubject
()
{
return
subject
;
}
public
void
setSubject
(
String
subject
)
{
this
.
subject
=
subject
;
}
@XmlElement
public
int
getMaxUsers
()
{
return
maxUsers
;
}
public
void
setMaxUsers
(
int
maxUsers
)
{
this
.
maxUsers
=
maxUsers
;
}
@XmlElement
public
Date
getCreationDate
()
{
return
creationDate
;
}
public
void
setCreationDate
(
Date
creationDate
)
{
this
.
creationDate
=
creationDate
;
}
@XmlElement
public
Date
getModificationDate
()
{
return
modificationDate
;
}
public
void
setModificationDate
(
Date
modificationDate
)
{
this
.
modificationDate
=
modificationDate
;
}
@XmlElement
public
boolean
isPersistent
()
{
return
persistent
;
}
public
void
setPersistent
(
boolean
persistent
)
{
this
.
persistent
=
persistent
;
}
@XmlElement
public
boolean
isPublicRoom
()
{
return
publicRoom
;
}
public
void
setPublicRoom
(
boolean
publicRoom
)
{
this
.
publicRoom
=
publicRoom
;
}
@XmlElement
public
boolean
isRegistrationEnabled
()
{
return
registrationEnabled
;
}
public
void
setRegistrationEnabled
(
boolean
registrationEnabled
)
{
this
.
registrationEnabled
=
registrationEnabled
;
}
@XmlElement
public
boolean
isCanAnyoneDiscoverJID
()
{
return
canAnyoneDiscoverJID
;
}
public
void
setCanAnyoneDiscoverJID
(
boolean
canAnyoneDiscoverJID
)
{
this
.
canAnyoneDiscoverJID
=
canAnyoneDiscoverJID
;
}
@XmlElement
public
boolean
isCanOccupantsChangeSubject
()
{
return
canOccupantsChangeSubject
;
}
public
void
setCanOccupantsChangeSubject
(
boolean
canOccupantsChangeSubject
)
{
this
.
canOccupantsChangeSubject
=
canOccupantsChangeSubject
;
}
@XmlElement
public
boolean
isCanOccupantsInvite
()
{
return
canOccupantsInvite
;
}
public
void
setCanOccupantsInvite
(
boolean
canOccupantsInvite
)
{
this
.
canOccupantsInvite
=
canOccupantsInvite
;
}
public
void
setBroadcastPresenceRoles
(
List
<
String
>
broadcastPresenceRoles
)
{
this
.
broadcastPresenceRoles
=
broadcastPresenceRoles
;
}
@XmlElement
public
boolean
isCanChangeNickname
()
{
return
canChangeNickname
;
}
public
void
setCanChangeNickname
(
boolean
canChangeNickname
)
{
this
.
canChangeNickname
=
canChangeNickname
;
}
@XmlElement
public
boolean
isLogEnabled
()
{
return
logEnabled
;
}
public
void
setLogEnabled
(
boolean
logEnabled
)
{
this
.
logEnabled
=
logEnabled
;
}
@XmlElement
public
boolean
isLoginRestrictedToNickname
()
{
return
loginRestrictedToNickname
;
}
public
void
setLoginRestrictedToNickname
(
boolean
loginRestrictedToNickname
)
{
this
.
loginRestrictedToNickname
=
loginRestrictedToNickname
;
}
@XmlElement
public
boolean
isMembersOnly
()
{
return
membersOnly
;
}
public
void
setMembersOnly
(
boolean
membersOnly
)
{
this
.
membersOnly
=
membersOnly
;
}
@XmlElement
public
boolean
isModerated
()
{
return
moderated
;
}
public
void
setModerated
(
boolean
moderated
)
{
this
.
moderated
=
moderated
;
}
@XmlElement
(
name
=
"broadcastPresenceRole"
)
@XmlElementWrapper
(
name
=
"broadcastPresenceRoles"
)
public
List
<
String
>
getBroadcastPresenceRoles
()
{
return
broadcastPresenceRoles
;
}
@XmlElementWrapper
(
name
=
"owners"
)
@XmlElement
(
name
=
"owner"
)
public
List
<
String
>
getOwners
()
{
return
owners
;
}
public
void
setOwners
(
List
<
String
>
owners
)
{
this
.
owners
=
owners
;
}
@XmlElementWrapper
(
name
=
"members"
)
@XmlElement
(
name
=
"member"
)
public
List
<
String
>
getMembers
()
{
return
members
;
}
public
void
setMembers
(
List
<
String
>
members
)
{
this
.
members
=
members
;
}
@XmlElementWrapper
(
name
=
"outcasts"
)
@XmlElement
(
name
=
"outcast"
)
public
List
<
String
>
getOutcasts
()
{
return
outcasts
;
}
public
void
setOutcasts
(
List
<
String
>
outcasts
)
{
this
.
outcasts
=
outcasts
;
}
@XmlElementWrapper
(
name
=
"admins"
)
@XmlElement
(
name
=
"admin"
)
public
List
<
String
>
getAdmins
()
{
return
admins
;
}
public
void
setAdmins
(
List
<
String
>
admins
)
{
this
.
admins
=
admins
;
}
}
\ No newline at end of file
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/ParticipantEntities.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
@XmlRootElement
(
name
=
"participants"
)
public
class
ParticipantEntities
{
List
<
ParticipantEntity
>
participants
;
public
ParticipantEntities
()
{
}
public
ParticipantEntities
(
List
<
ParticipantEntity
>
participants
)
{
this
.
participants
=
participants
;
}
@XmlElement
(
name
=
"participant"
)
public
List
<
ParticipantEntity
>
getParticipants
()
{
return
participants
;
}
public
void
setParticipants
(
List
<
ParticipantEntity
>
participants
)
{
this
.
participants
=
participants
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/ParticipantEntity.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
@XmlRootElement
(
name
=
"participant"
)
public
class
ParticipantEntity
{
private
String
jid
;
private
String
role
;
private
String
affiliation
;
public
ParticipantEntity
()
{
}
@XmlElement
public
String
getJid
()
{
return
jid
;
}
public
void
setJid
(
String
jid
)
{
this
.
jid
=
jid
;
}
@XmlElement
public
String
getRole
()
{
return
role
;
}
public
void
setRole
(
String
role
)
{
this
.
role
=
role
;
}
@XmlElement
public
String
getAffiliation
()
{
return
affiliation
;
}
public
void
setAffiliation
(
String
affiliation
)
{
this
.
affiliation
=
affiliation
;
}
}
\ No newline at end of file
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/RosterEntities.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
/**
* The Class RosterEntities.
*/
@XmlRootElement
(
name
=
"roster"
)
public
class
RosterEntities
{
/** The roster. */
List
<
RosterItemEntity
>
roster
;
/**
* Instantiates a new roster entities.
*/
public
RosterEntities
()
{
}
/**
* Instantiates a new roster entities.
*
* @param roster
* the roster
*/
public
RosterEntities
(
List
<
RosterItemEntity
>
roster
)
{
this
.
roster
=
roster
;
}
/**
* Gets the roster.
*
* @return the roster
*/
@XmlElement
(
name
=
"rosterItem"
)
public
List
<
RosterItemEntity
>
getRoster
()
{
return
roster
;
}
/**
* Sets the roster.
*
* @param roster
* the new roster
*/
public
void
setRoster
(
List
<
RosterItemEntity
>
roster
)
{
this
.
roster
=
roster
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/RosterItemEntity.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlElementWrapper
;
import
javax.xml.bind.annotation.XmlRootElement
;
import
javax.xml.bind.annotation.XmlType
;
/**
* The Class RosterItemEntity.
*/
@XmlRootElement
(
name
=
"rosterItem"
)
@XmlType
(
propOrder
=
{
"jid"
,
"nickname"
,
"subscriptionType"
,
"groups"
})
public
class
RosterItemEntity
{
/** The jid. */
private
String
jid
;
/** The nickname. */
private
String
nickname
;
/** The subscription type. */
private
int
subscriptionType
;
/** The groups. */
private
List
<
String
>
groups
;
/**
* Instantiates a new roster item entity.
*/
public
RosterItemEntity
()
{
}
/**
* Instantiates a new roster item entity.
*
* @param jid
* the jid
* @param nickname
* the nickname
* @param subscriptionType
* the subscription type
*/
public
RosterItemEntity
(
String
jid
,
String
nickname
,
int
subscriptionType
)
{
this
.
jid
=
jid
;
this
.
nickname
=
nickname
;
this
.
subscriptionType
=
subscriptionType
;
}
/**
* Gets the jid.
*
* @return the jid
*/
@XmlElement
public
String
getJid
()
{
return
jid
;
}
/**
* Sets the jid.
*
* @param jid
* the new jid
*/
public
void
setJid
(
String
jid
)
{
this
.
jid
=
jid
;
}
/**
* Gets the nickname.
*
* @return the nickname
*/
@XmlElement
public
String
getNickname
()
{
return
nickname
;
}
/**
* Sets the nickname.
*
* @param nickname
* the new nickname
*/
public
void
setNickname
(
String
nickname
)
{
this
.
nickname
=
nickname
;
}
/**
* Gets the subscription type.
*
* @return the subscription type
*/
@XmlElement
public
int
getSubscriptionType
()
{
return
subscriptionType
;
}
/**
* Sets the subscription type.
*
* @param subscriptionType
* the new subscription type
*/
public
void
setSubscriptionType
(
int
subscriptionType
)
{
this
.
subscriptionType
=
subscriptionType
;
}
/**
* Gets the groups.
*
* @return the groups
*/
@XmlElement
(
name
=
"group"
)
@XmlElementWrapper
(
name
=
"groups"
)
public
List
<
String
>
getGroups
()
{
return
groups
;
}
/**
* Sets the groups.
*
* @param groups
* the new groups
*/
public
void
setGroups
(
List
<
String
>
groups
)
{
this
.
groups
=
groups
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/UserEntities.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
/**
* The Class UserEntities.
*/
@XmlRootElement
(
name
=
"users"
)
public
class
UserEntities
{
/** The users. */
List
<
UserEntity
>
users
;
/**
* Instantiates a new user entities.
*/
public
UserEntities
()
{
}
/**
* Instantiates a new user entities.
*
* @param users
* the users
*/
public
UserEntities
(
List
<
UserEntity
>
users
)
{
this
.
users
=
users
;
}
/**
* Gets the users.
*
* @return the users
*/
@XmlElement
(
name
=
"user"
)
public
List
<
UserEntity
>
getUsers
()
{
return
users
;
}
/**
* Sets the users.
*
* @param users
* the new users
*/
public
void
setUsers
(
List
<
UserEntity
>
users
)
{
this
.
users
=
users
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/UserEntity.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlElementWrapper
;
import
javax.xml.bind.annotation.XmlRootElement
;
import
javax.xml.bind.annotation.XmlType
;
/**
* The Class UserEntity.
*/
@XmlRootElement
(
name
=
"user"
)
@XmlType
(
propOrder
=
{
"username"
,
"name"
,
"email"
,
"password"
,
"properties"
})
public
class
UserEntity
{
/** The username. */
private
String
username
;
/** The name. */
private
String
name
;
/** The email. */
private
String
email
;
/** The password. */
private
String
password
;
/** The properties. */
private
List
<
UserProperty
>
properties
;
/**
* Instantiates a new user entity.
*/
public
UserEntity
()
{
}
/**
* Instantiates a new user entity.
*
* @param username
* the username
* @param name
* the name
* @param email
* the email
*/
public
UserEntity
(
String
username
,
String
name
,
String
email
)
{
this
.
username
=
username
;
this
.
name
=
name
;
this
.
email
=
email
;
}
/**
* Gets the username.
*
* @return the username
*/
@XmlElement
public
String
getUsername
()
{
return
username
;
}
/**
* Sets the username.
*
* @param username
* the new username
*/
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
/**
* Gets the name.
*
* @return the name
*/
@XmlElement
public
String
getName
()
{
return
name
;
}
/**
* Sets the name.
*
* @param name
* the new name
*/
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
/**
* Gets the email.
*
* @return the email
*/
@XmlElement
public
String
getEmail
()
{
return
email
;
}
/**
* Sets the email.
*
* @param email
* the new email
*/
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
/**
* Gets the password.
*
* @return the password
*/
public
String
getPassword
()
{
return
password
;
}
/**
* Sets the password.
*
* @param password
* the new password
*/
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
/**
* Gets the properties.
*
* @return the properties
*/
@XmlElement
(
name
=
"property"
)
@XmlElementWrapper
(
name
=
"properties"
)
public
List
<
UserProperty
>
getProperties
()
{
return
properties
;
}
/**
* Sets the properties.
*
* @param properties
* the new properties
*/
public
void
setProperties
(
List
<
UserProperty
>
properties
)
{
this
.
properties
=
properties
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/UserGroupsEntity.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
java.util.List
;
import
javax.xml.bind.annotation.XmlElement
;
import
javax.xml.bind.annotation.XmlRootElement
;
/**
* The Class UserGroupsEntity.
*/
@XmlRootElement
(
name
=
"groups"
)
public
class
UserGroupsEntity
{
/** The group names. */
private
List
<
String
>
groupNames
;
/**
* Instantiates a new user groups entity.
*/
public
UserGroupsEntity
()
{
}
/**
* Instantiates a new user groups entity.
*
* @param groupNames
* the group names
*/
public
UserGroupsEntity
(
List
<
String
>
groupNames
)
{
this
.
groupNames
=
groupNames
;
}
/**
* Gets the group names.
*
* @return the group names
*/
@XmlElement
(
name
=
"groupname"
)
public
List
<
String
>
getGroupNames
()
{
return
groupNames
;
}
/**
* Sets the group names.
*
* @param groupNames
* the new group names
*/
public
void
setGroupNames
(
List
<
String
>
groupNames
)
{
this
.
groupNames
=
groupNames
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/entity/UserProperty.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
entity
;
import
javax.xml.bind.annotation.XmlAttribute
;
/**
* The Class UserProperty.
*/
public
class
UserProperty
{
/** The key. */
private
String
key
;
/** The value. */
private
String
value
;
/**
* Instantiates a new user property.
*/
public
UserProperty
()
{
}
/**
* Instantiates a new user property.
*
* @param key
* the key
* @param value
* the value
*/
public
UserProperty
(
String
key
,
String
value
)
{
this
.
key
=
key
;
this
.
value
=
value
;
}
/**
* Gets the key.
*
* @return the key
*/
@XmlAttribute
public
String
getKey
()
{
return
key
;
}
/**
* Sets the key.
*
* @param key
* the new key
*/
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
/**
* Gets the value.
*
* @return the value
*/
@XmlAttribute
public
String
getValue
()
{
return
value
;
}
/**
* Sets the value.
*
* @param value
* the new value
*/
public
void
setValue
(
String
value
)
{
this
.
value
=
value
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/exceptions/ExceptionType.java
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
exceptions
;
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
exceptions
;
/**
/**
* The Class ExceptionType.
* The Class ExceptionType.
*/
*/
public
final
class
ExceptionType
{
public
final
class
ExceptionType
{
/** The Constant PROPERTY_NOT_FOUND. */
/** The Constant ILLEGAL_ARGUMENT_EXCEPTION. */
public
static
final
String
PROPERTY_NOT_FOUND
=
"PropertyNotFoundException"
;
public
static
final
String
ILLEGAL_ARGUMENT_EXCEPTION
=
"IllegalArgumentException"
;
/** The Constant ILLEGAL_ARGUMENT_EXCEPTION. */
/** The Constant SHARED_GROUP_EXCEPTION. */
public
static
final
String
ILLEGAL_ARGUMENT_EXCEPTION
=
"IllegalArgumentException"
;
public
static
final
String
SHARED_GROUP_EXCEPTION
=
"SharedGroupException"
;
/**
/** The Constant PROPERTY_NOT_FOUND. */
* Instantiates a new exception type.
public
static
final
String
PROPERTY_NOT_FOUND
=
"PropertyNotFoundException"
;
*/
private
ExceptionType
()
{
/** The Constant USER_ALREADY_EXISTS_EXCEPTION. */
}
public
static
final
String
USER_ALREADY_EXISTS_EXCEPTION
=
"UserAlreadyExistsException"
;
}
/** The Constant USER_NOT_FOUND_EXCEPTION. */
public
static
final
String
USER_NOT_FOUND_EXCEPTION
=
"UserNotFoundException"
;
/** The Constant GROUP_ALREADY_EXISTS. */
public
static
final
String
GROUP_ALREADY_EXISTS
=
"GroupAlreadyExistsException"
;
/** The Constant GROUP_NOT_FOUND. */
public
static
final
String
GROUP_NOT_FOUND
=
"GroupNotFoundException"
;
/** The Constant ROOM_NOT_FOUND. */
public
static
final
String
ROOM_NOT_FOUND
=
"RoomNotFoundException"
;
/** The Constant NOT_ALLOWED. */
public
static
final
String
NOT_ALLOWED
=
"NotAllowedException"
;
/**
* Instantiates a new exception type.
*/
private
ExceptionType
()
{
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/RESTExceptionMapper.java
→
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/
exceptions/
RESTExceptionMapper.java
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
;
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
exceptions
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.ext.ExceptionMapper
;
import
javax.ws.rs.ext.ExceptionMapper
;
import
javax.ws.rs.ext.Provider
;
import
javax.ws.rs.ext.Provider
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ErrorResponse
;
import
org.slf4j.Logger
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
/**
* The Class RESTExceptionMapper.
/**
*/
* The Class RESTExceptionMapper.
@Provider
*/
public
class
RESTExceptionMapper
implements
ExceptionMapper
<
ServiceException
>
{
@Provider
public
class
RESTExceptionMapper
implements
ExceptionMapper
<
ServiceException
>
{
/** The log. */
private
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
RESTExceptionMapper
.
class
);
/** The log. */
private
static
Logger
LOG
=
LoggerFactory
.
getLogger
(
RESTExceptionMapper
.
class
);
/**
* Instantiates a new REST exception mapper.
/**
*/
* Instantiates a new REST exception mapper.
public
RESTExceptionMapper
()
{
*/
}
public
RESTExceptionMapper
()
{
}
/*
* (non-Javadoc)
/*
*
* (non-Javadoc)
* @see javax.ws.rs.ext.ExceptionMapper#toResponse(java.lang.Throwable)
*
*/
* @see javax.ws.rs.ext.ExceptionMapper#toResponse(java.lang.Throwable)
public
Response
toResponse
(
ServiceException
exception
)
{
*/
ErrorResponse
errorResponse
=
new
ErrorResponse
();
public
Response
toResponse
(
ServiceException
exception
)
{
errorResponse
.
setRessource
(
exception
.
getRessource
());
ErrorResponse
errorResponse
=
new
ErrorResponse
();
errorResponse
.
setMessage
(
exception
.
getMessage
());
errorResponse
.
setRessource
(
exception
.
getRessource
());
errorResponse
.
setException
(
exception
.
getException
());
errorResponse
.
setMessage
(
exception
.
getMessage
());
LOG
.
error
(
errorResponse
.
setException
(
exception
.
getException
());
exception
.
getException
()
+
": "
+
exception
.
getMessage
()
+
" with ressource "
LOG
.
error
(
+
exception
.
getRessource
(),
exception
.
getException
());
exception
.
getException
()
+
": "
+
exception
.
getMessage
()
+
" with ressource "
return
Response
.
status
(
exception
.
getStatus
()).
entity
(
errorResponse
).
type
(
MediaType
.
APPLICATION_XML
).
build
();
+
exception
.
getRessource
(),
exception
.
getException
());
}
return
Response
.
status
(
exception
.
getStatus
()).
entity
(
errorResponse
).
type
(
MediaType
.
APPLICATION_XML
).
build
();
}
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/JerseyWrapper.java
→
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/
service/
JerseyWrapper.java
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
;
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletConfig
;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletException
;
import
org.jivesoftware.admin.AuthCheckFilter
;
import
org.jivesoftware.admin.AuthCheckFilter
;
import
org.jivesoftware.openfire.plugin.rest.service.RestAPIService
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.RESTExceptionMapper
;
import
com.sun.jersey.api.core.PackagesResourceConfig
;
import
com.sun.jersey.api.core.PackagesResourceConfig
;
import
com.sun.jersey.spi.container.servlet.ServletContainer
;
import
com.sun.jersey.spi.container.servlet.ServletContainer
;
/**
/**
* The Class JerseyWrapper.
* The Class JerseyWrapper.
*/
*/
public
class
JerseyWrapper
extends
ServletContainer
{
public
class
JerseyWrapper
extends
ServletContainer
{
/** The Constant AUTHFILTER. */
/** The Constant AUTHFILTER. */
private
static
final
String
AUTHFILTER
=
"org.jivesoftware.openfire.plugin.rest.AuthFilter"
;
private
static
final
String
AUTHFILTER
=
"org.jivesoftware.openfire.plugin.rest.AuthFilter"
;
/** The Constant CONTAINER_REQUEST_FILTERS. */
/** The Constant CONTAINER_REQUEST_FILTERS. */
private
static
final
String
CONTAINER_REQUEST_FILTERS
=
"com.sun.jersey.spi.container.ContainerRequestFilters"
;
private
static
final
String
CONTAINER_REQUEST_FILTERS
=
"com.sun.jersey.spi.container.ContainerRequestFilters"
;
/** The Constant RESOURCE_CONFIG_CLASS_KEY. */
/** The Constant RESOURCE_CONFIG_CLASS_KEY. */
private
static
final
String
RESOURCE_CONFIG_CLASS_KEY
=
"com.sun.jersey.config.property.resourceConfigClass"
;
private
static
final
String
RESOURCE_CONFIG_CLASS_KEY
=
"com.sun.jersey.config.property.resourceConfigClass"
;
/** The Constant RESOURCE_CONFIG_CLASS. */
/** The Constant RESOURCE_CONFIG_CLASS. */
private
static
final
String
RESOURCE_CONFIG_CLASS
=
"com.sun.jersey.api.core.PackagesResourceConfig"
;
private
static
final
String
RESOURCE_CONFIG_CLASS
=
"com.sun.jersey.api.core.PackagesResourceConfig"
;
/** The Constant SCAN_PACKAGE_DEFAULT. */
/** The Constant SCAN_PACKAGE_DEFAULT. */
private
static
final
String
SCAN_PACKAGE_DEFAULT
=
JerseyWrapper
.
class
.
getPackage
().
getName
();
private
static
final
String
SCAN_PACKAGE_DEFAULT
=
JerseyWrapper
.
class
.
getPackage
().
getName
();
/** The Constant serialVersionUID. */
/** The Constant serialVersionUID. */
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/** The Constant SERVLET_URL. */
/** The Constant SERVLET_URL. */
private
static
final
String
SERVLET_URL
=
"restapi/*"
;
private
static
final
String
SERVLET_URL
=
"restapi/*"
;
/** The config. */
/** The config. */
private
static
Map
<
String
,
Object
>
config
;
private
static
Map
<
String
,
Object
>
config
;
/** The prc. */
/** The prc. */
private
static
PackagesResourceConfig
prc
;
private
static
PackagesResourceConfig
prc
;
static
{
static
{
config
=
new
HashMap
<
String
,
Object
>();
config
=
new
HashMap
<
String
,
Object
>();
config
.
put
(
RESOURCE_CONFIG_CLASS_KEY
,
RESOURCE_CONFIG_CLASS
);
config
.
put
(
RESOURCE_CONFIG_CLASS_KEY
,
RESOURCE_CONFIG_CLASS
);
prc
=
new
PackagesResourceConfig
(
SCAN_PACKAGE_DEFAULT
);
prc
=
new
PackagesResourceConfig
(
SCAN_PACKAGE_DEFAULT
);
prc
.
setPropertiesAndFeatures
(
config
);
prc
.
setPropertiesAndFeatures
(
config
);
prc
.
getProperties
().
put
(
CONTAINER_REQUEST_FILTERS
,
AUTHFILTER
);
prc
.
getProperties
().
put
(
CONTAINER_REQUEST_FILTERS
,
AUTHFILTER
);
prc
.
getClasses
().
add
(
RestAPIService
.
class
);
prc
.
getClasses
().
add
(
RestAPIService
.
class
);
prc
.
getClasses
().
add
(
RESTExceptionMapper
.
class
);
prc
.
getClasses
().
add
(
MUCRoomService
.
class
);
}
prc
.
getClasses
().
add
(
MUCRoomOwnersService
.
class
);
prc
.
getClasses
().
add
(
MUCRoomAdminsService
.
class
);
/**
prc
.
getClasses
().
add
(
MUCRoomMembersService
.
class
);
* Instantiates a new jersey wrapper.
prc
.
getClasses
().
add
(
MUCRoomOutcastsService
.
class
);
*/
public
JerseyWrapper
()
{
prc
.
getClasses
().
add
(
UserServiceLegacy
.
class
);
super
(
prc
);
prc
.
getClasses
().
add
(
UserService
.
class
);
}
prc
.
getClasses
().
add
(
UserRosterService
.
class
);
prc
.
getClasses
().
add
(
UserGroupService
.
class
);
/*
prc
.
getClasses
().
add
(
UserLockoutService
.
class
);
* (non-Javadoc)
*
prc
.
getClasses
().
add
(
RESTExceptionMapper
.
class
);
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
}
*/
@Override
/**
public
void
init
(
ServletConfig
servletConfig
)
throws
ServletException
{
* Instantiates a new jersey wrapper.
super
.
init
(
servletConfig
);
*/
// Exclude this servlet from requering the user to login
public
JerseyWrapper
()
{
AuthCheckFilter
.
addExclude
(
SERVLET_URL
);
super
(
prc
);
}
}
/*
/*
* (non-Javadoc)
* (non-Javadoc)
*
*
* @see com.sun.jersey.spi.container.servlet.ServletContainer#destroy()
* @see javax.servlet.GenericServlet#init(javax.servlet.ServletConfig)
*/
*/
@Override
@Override
public
void
destroy
()
{
public
void
init
(
ServletConfig
servletConfig
)
throws
ServletException
{
super
.
destroy
();
super
.
init
(
servletConfig
);
// Release the excluded URL
// Exclude this servlet from requering the user to login
AuthCheckFilter
.
removeExclude
(
SERVLET_URL
);
AuthCheckFilter
.
addExclude
(
SERVLET_URL
);
}
}
}
/*
* (non-Javadoc)
*
* @see com.sun.jersey.spi.container.servlet.ServletContainer#destroy()
*/
@Override
public
void
destroy
()
{
super
.
destroy
();
// Release the excluded URL
AuthCheckFilter
.
removeExclude
(
SERVLET_URL
);
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/MUCRoomAdminsService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DefaultValue
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.controller.MUCRoomController
;
@Path
(
"restapi/v1/chatrooms/{roomName}/admins"
)
public
class
MUCRoomAdminsService
{
@POST
@Path
(
"/{jid}"
)
public
Response
addMUCRoomAdmin
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"jid"
)
String
jid
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
addAdmin
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{jid}"
)
public
Response
deleteMUCRoomAdmin
(
@PathParam
(
"jid"
)
String
jid
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
deleteAffiliation
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/MUCRoomMembersService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DefaultValue
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.controller.MUCRoomController
;
@Path
(
"restapi/v1/chatrooms/{roomName}/members"
)
public
class
MUCRoomMembersService
{
@POST
@Path
(
"/{jid}"
)
public
Response
addMUCRoomMember
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"jid"
)
String
jid
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
addMember
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{jid}"
)
public
Response
deleteMUCRoomMember
(
@PathParam
(
"jid"
)
String
jid
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
deleteAffiliation
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/MUCRoomOutcastsService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DefaultValue
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.controller.MUCRoomController
;
@Path
(
"restapi/v1/chatrooms/{roomName}/outcasts"
)
public
class
MUCRoomOutcastsService
{
@POST
@Path
(
"/{jid}"
)
public
Response
addMUCRoomOutcast
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"jid"
)
String
jid
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
addOutcast
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{jid}"
)
public
Response
deleteMUCRoomOutcast
(
@PathParam
(
"jid"
)
String
jid
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
deleteAffiliation
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/MUCRoomOwnersService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DefaultValue
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.controller.MUCRoomController
;
@Path
(
"restapi/v1/chatrooms/{roomName}/owners"
)
public
class
MUCRoomOwnersService
{
@POST
@Path
(
"/{jid}"
)
public
Response
addMUCRoomOwner
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"jid"
)
String
jid
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
addOwner
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{jid}"
)
public
Response
deleteMUCRoomOwner
(
@PathParam
(
"jid"
)
String
jid
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@PathParam
(
"roomName"
)
String
roomName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
deleteAffiliation
(
serviceName
,
roomName
,
jid
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/MUCRoomService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DefaultValue
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response.Status
;
import
org.jivesoftware.openfire.plugin.rest.entity.MUCChannelType
;
import
org.jivesoftware.openfire.plugin.rest.entity.MUCRoomEntities
;
import
org.jivesoftware.openfire.plugin.rest.entity.MUCRoomEntity
;
import
org.jivesoftware.openfire.plugin.rest.entity.ParticipantEntities
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.controller.MUCRoomController
;
@Path
(
"restapi/v1/chatrooms"
)
public
class
MUCRoomService
{
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
MUCRoomEntities
getMUCRooms
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
@DefaultValue
(
MUCChannelType
.
PUBLIC
)
@QueryParam
(
"type"
)
String
channelType
,
@QueryParam
(
"search"
)
String
roomSearch
)
{
return
MUCRoomController
.
getInstance
().
getChatRooms
(
serviceName
,
channelType
,
roomSearch
);
}
@GET
@Path
(
"/{roomName}"
)
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
MUCRoomEntity
getMUCRoomJSON2
(
@PathParam
(
"roomName"
)
String
roomName
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
)
throws
ServiceException
{
return
MUCRoomController
.
getInstance
().
getChatRoom
(
roomName
,
serviceName
);
}
@DELETE
@Path
(
"/{roomName}"
)
public
Response
deleteMUCRoom
(
@PathParam
(
"roomName"
)
String
roomName
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
deleteChatRoom
(
roomName
,
serviceName
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
@POST
public
Response
createMUCRoom
(
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
MUCRoomEntity
mucRoomEntity
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
createChatRoom
(
serviceName
,
mucRoomEntity
);
return
Response
.
status
(
Status
.
CREATED
).
build
();
}
@PUT
@Path
(
"/{roomName}"
)
public
Response
udpateMUCRoom
(
@PathParam
(
"roomName"
)
String
roomName
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
,
MUCRoomEntity
mucRoomEntity
)
throws
ServiceException
{
MUCRoomController
.
getInstance
().
updateChatRoom
(
roomName
,
serviceName
,
mucRoomEntity
);
return
Response
.
status
(
Status
.
OK
).
build
();
}
@GET
@Path
(
"/{roomName}/participants"
)
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
ParticipantEntities
getMUCRoomParticipants
(
@PathParam
(
"roomName"
)
String
roomName
,
@DefaultValue
(
"conference"
)
@QueryParam
(
"servicename"
)
String
serviceName
)
{
return
MUCRoomController
.
getInstance
().
getRoomParticipants
(
roomName
,
serviceName
);
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/RestAPIService.java
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
;
import
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
;
import
org.jivesoftware.openfire.plugin.rest.entity.SystemProperties
;
import
org.jivesoftware.openfire.plugin.rest.entity.SystemProperties
;
import
org.jivesoftware.openfire.plugin.rest.entity.SystemProperty
;
import
org.jivesoftware.openfire.plugin.rest.entity.SystemProperty
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
@Path
(
"restapi/
system/properties"
)
@Path
(
"restapi/
v1/system/properties"
)
public
class
RestAPIService
{
public
class
RestAPIService
{
private
RESTServicePlugin
plugin
;
private
RESTServicePlugin
plugin
;
@PostConstruct
@PostConstruct
public
void
init
()
{
public
void
init
()
{
plugin
=
RESTServicePlugin
.
getInstance
();
plugin
=
RESTServicePlugin
.
getInstance
();
}
}
@GET
@GET
@Produces
(
MediaType
.
APPLICATION_XML
)
@Produces
(
{
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
SystemProperties
getSystemProperties
()
{
public
SystemProperties
getSystemProperties
()
{
return
plugin
.
getSystemProperties
();
return
plugin
.
getSystemProperties
();
}
}
@GET
@GET
@Path
(
"/{propertyKey}"
)
@Path
(
"/{propertyKey}"
)
@Produces
(
MediaType
.
APPLICATION_XML
)
@Produces
(
{
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
SystemProperty
getSystemProperty
(
@PathParam
(
"propertyKey"
)
String
propertyKey
)
throws
ServiceException
{
public
SystemProperty
getSystemProperty
(
@PathParam
(
"propertyKey"
)
String
propertyKey
)
throws
ServiceException
{
return
plugin
.
getSystemProperty
(
propertyKey
);
return
plugin
.
getSystemProperty
(
propertyKey
);
}
}
@POST
@POST
public
Response
createSystemProperty
(
SystemProperty
systemProperty
)
throws
ServiceException
{
public
Response
createSystemProperty
(
SystemProperty
systemProperty
)
throws
ServiceException
{
plugin
.
createSystemProperty
(
systemProperty
);
plugin
.
createSystemProperty
(
systemProperty
);
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
}
@PUT
@PUT
@Path
(
"/{propertyKey}"
)
@Path
(
"/{propertyKey}"
)
public
Response
updateUser
(
@PathParam
(
"propertyKey"
)
String
propertyKey
,
SystemProperty
systemProperty
)
throws
ServiceException
{
public
Response
updateUser
(
@PathParam
(
"propertyKey"
)
String
propertyKey
,
SystemProperty
systemProperty
)
throws
ServiceException
{
plugin
.
updateSystemProperty
(
propertyKey
,
systemProperty
);
plugin
.
updateSystemProperty
(
propertyKey
,
systemProperty
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
@DELETE
@DELETE
@Path
(
"/{propertyKey}"
)
@Path
(
"/{propertyKey}"
)
public
Response
deleteUser
(
@PathParam
(
"propertyKey"
)
String
propertyKey
)
throws
ServiceException
{
public
Response
deleteUser
(
@PathParam
(
"propertyKey"
)
String
propertyKey
)
throws
ServiceException
{
plugin
.
deleteSystemProperty
(
propertyKey
);
plugin
.
deleteSystemProperty
(
propertyKey
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserGroupService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.entity.UserGroupsEntity
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
@Path
(
"restapi/v1/users/{username}/groups"
)
public
class
UserGroupService
{
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
UserGroupsEntity
getUserGroups
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
return
new
UserGroupsEntity
(
plugin
.
getUserGroups
(
username
));
}
@POST
public
Response
addUserToGroups
(
@PathParam
(
"username"
)
String
username
,
UserGroupsEntity
userGroupsEntity
)
throws
ServiceException
{
plugin
.
addUserToGroups
(
username
,
userGroupsEntity
);
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@DELETE
public
Response
deleteUserFromGroups
(
@PathParam
(
"username"
)
String
username
,
UserGroupsEntity
userGroupsEntity
)
throws
ServiceException
{
plugin
.
deleteUserFromGroups
(
username
,
userGroupsEntity
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserLockoutService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
@Path
(
"restapi/v1/lockouts"
)
public
class
UserLockoutService
{
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@POST
@Path
(
"/{username}"
)
public
Response
disableUser
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
plugin
.
disableUser
(
username
);
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{username}"
)
public
Response
enableUser
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
plugin
.
enableUser
(
username
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserRosterService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.SharedGroupException
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterEntities
;
import
org.jivesoftware.openfire.plugin.rest.entity.RosterItemEntity
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ExceptionType
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
@Path
(
"restapi/v1/users/{username}/roster"
)
public
class
UserRosterService
{
private
static
final
String
COULD_NOT_UPDATE_THE_ROSTER
=
"Could not update the roster"
;
private
static
final
String
COULD_NOT_CREATE_ROSTER_ITEM
=
"Could not create roster item"
;
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
RosterEntities
getUserRoster
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
return
plugin
.
getRosterEntities
(
username
);
}
@POST
public
Response
createRoster
(
@PathParam
(
"username"
)
String
username
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
addRosterItem
(
username
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_CREATE_ROSTER_ITEM
,
""
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@DELETE
@Path
(
"/{rosterJid}"
)
public
Response
deleteRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
)
throws
ServiceException
{
try
{
plugin
.
deleteRosterItem
(
username
,
rosterJid
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
"Could not delete the roster item"
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
@PUT
@Path
(
"/{rosterJid}"
)
public
Response
updateRoster
(
@PathParam
(
"username"
)
String
username
,
@PathParam
(
"rosterJid"
)
String
rosterJid
,
RosterItemEntity
rosterItemEntity
)
throws
ServiceException
{
try
{
plugin
.
updateRosterItem
(
username
,
rosterJid
,
rosterItemEntity
);
}
catch
(
UserNotFoundException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_NOT_FOUND_EXCEPTION
,
Response
.
Status
.
NOT_FOUND
,
e
);
}
catch
(
SharedGroupException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
SHARED_GROUP_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
catch
(
UserAlreadyExistsException
e
)
{
throw
new
ServiceException
(
COULD_NOT_UPDATE_THE_ROSTER
,
rosterJid
,
ExceptionType
.
USER_ALREADY_EXISTS_EXCEPTION
,
Response
.
Status
.
BAD_REQUEST
,
e
);
}
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserService.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
javax.annotation.PostConstruct
;
import
javax.ws.rs.DELETE
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.PathParam
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.QueryParam
;
import
javax.ws.rs.core.MediaType
;
import
javax.ws.rs.core.Response
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceController
;
import
org.jivesoftware.openfire.plugin.rest.entity.UserEntities
;
import
org.jivesoftware.openfire.plugin.rest.entity.UserEntity
;
import
org.jivesoftware.openfire.plugin.rest.exceptions.ServiceException
;
@Path
(
"restapi/v1/users"
)
public
class
UserService
{
private
UserServiceController
plugin
;
@PostConstruct
public
void
init
()
{
plugin
=
UserServiceController
.
getInstance
();
}
@GET
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
UserEntities
getUsers
(
@QueryParam
(
"search"
)
String
userSearch
,
@QueryParam
(
"propertyKey"
)
String
propertyKey
,
@QueryParam
(
"propertyValue"
)
String
propertyValue
)
throws
ServiceException
{
return
plugin
.
getUserEntities
(
userSearch
,
propertyKey
,
propertyValue
);
}
@POST
public
Response
createUser
(
UserEntity
userEntity
)
throws
ServiceException
{
plugin
.
createUser
(
userEntity
);
return
Response
.
status
(
Response
.
Status
.
CREATED
).
build
();
}
@GET
@Path
(
"/{username}"
)
@Produces
({
MediaType
.
APPLICATION_XML
,
MediaType
.
APPLICATION_JSON
})
public
UserEntity
getUser
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
return
plugin
.
getUserEntity
(
username
);
}
@PUT
@Path
(
"/{username}"
)
public
Response
updateUser
(
@PathParam
(
"username"
)
String
username
,
UserEntity
userEntity
)
throws
ServiceException
{
plugin
.
updateUser
(
username
,
userEntity
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
@DELETE
@Path
(
"/{username}"
)
public
Response
deleteUser
(
@PathParam
(
"username"
)
String
username
)
throws
ServiceException
{
plugin
.
deleteUser
(
username
);
return
Response
.
status
(
Response
.
Status
.
OK
).
build
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/service/UserServiceLegacy.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
service
;
import
gnu.inet.encoding.Stringprep
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
javax.annotation.PostConstruct
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.Response
;
import
org.apache.log4j.Logger
;
import
org.jivesoftware.openfire.SharedGroupException
;
import
org.jivesoftware.openfire.XMPPServer
;
import
org.jivesoftware.openfire.plugin.rest.RESTServicePlugin
;
import
org.jivesoftware.openfire.plugin.rest.controller.UserServiceLegacyController
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.jivesoftware.openfire.user.UserNotFoundException
;
import
org.xmpp.packet.JID
;
@Path
(
"restapi/v1"
)
public
class
UserServiceLegacy
{
private
static
Logger
Log
=
Logger
.
getLogger
(
UserServiceLegacy
.
class
);
@Context
private
HttpServletRequest
request
;
@Context
private
HttpServletResponse
response
;
private
RESTServicePlugin
plugin
;
private
UserServiceLegacyController
userServiceController
;
@PostConstruct
public
void
init
()
{
plugin
=
(
RESTServicePlugin
)
XMPPServer
.
getInstance
().
getPluginManager
()
.
getPlugin
(
"restapi"
);
userServiceController
=
UserServiceLegacyController
.
getInstance
();
}
@POST
@Path
(
"/userservice"
)
public
void
userSerivcePostRequest
()
throws
IOException
{
userSerivceRequest
();
}
@GET
@Path
(
"/userservice"
)
public
Response
userSerivceRequest
()
throws
IOException
{
// Printwriter for writing out responses to browser
PrintWriter
out
=
response
.
getWriter
();
if
(!
plugin
.
getAllowedIPs
().
isEmpty
())
{
// Get client's IP address
String
ipAddress
=
request
.
getHeader
(
"x-forwarded-for"
);
if
(
ipAddress
==
null
)
{
ipAddress
=
request
.
getHeader
(
"X_FORWARDED_FOR"
);
if
(
ipAddress
==
null
)
{
ipAddress
=
request
.
getHeader
(
"X-Forward-For"
);
if
(
ipAddress
==
null
)
{
ipAddress
=
request
.
getRemoteAddr
();
}
}
}
if
(!
plugin
.
getAllowedIPs
().
contains
(
ipAddress
))
{
Log
.
warn
(
"User service rejected service to IP address: "
+
ipAddress
);
replyError
(
"RequestNotAuthorised"
,
response
,
out
);
return
Response
.
status
(
200
).
build
();
}
}
String
username
=
request
.
getParameter
(
"username"
);
String
password
=
request
.
getParameter
(
"password"
);
String
name
=
request
.
getParameter
(
"name"
);
String
email
=
request
.
getParameter
(
"email"
);
String
type
=
request
.
getParameter
(
"type"
);
String
secret
=
request
.
getParameter
(
"secret"
);
String
groupNames
=
request
.
getParameter
(
"groups"
);
String
item_jid
=
request
.
getParameter
(
"item_jid"
);
String
sub
=
request
.
getParameter
(
"subscription"
);
// No defaults, add, delete, update only
// type = type == null ? "image" : type;
// Check that our plugin is enabled.
if
(!
plugin
.
isEnabled
())
{
Log
.
warn
(
"User service plugin is disabled: "
+
request
.
getQueryString
());
replyError
(
"UserServiceDisabled"
,
response
,
out
);
return
Response
.
status
(
200
).
build
();
}
// Check this request is authorised
if
(
secret
==
null
||
!
secret
.
equals
(
plugin
.
getSecret
()))
{
Log
.
warn
(
"An unauthorised user service request was received: "
+
request
.
getQueryString
());
replyError
(
"RequestNotAuthorised"
,
response
,
out
);
return
Response
.
status
(
200
).
build
();
}
// Some checking is required on the username
if
(
username
==
null
&&
!
"grouplist"
.
equals
(
type
))
{
replyError
(
"IllegalArgumentException"
,
response
,
out
);
return
Response
.
status
(
200
).
build
();
}
if
((
type
.
equals
(
"add_roster"
)
||
type
.
equals
(
"update_roster"
)
||
type
.
equals
(
"delete_roster"
))
&&
(
item_jid
==
null
||
!(
sub
==
null
||
sub
.
equals
(
"-1"
)
||
sub
.
equals
(
"0"
)
||
sub
.
equals
(
"1"
)
||
sub
.
equals
(
"2"
)
||
sub
.
equals
(
"3"
))))
{
replyError
(
"IllegalArgumentException"
,
response
,
out
);
return
Response
.
status
(
200
).
build
();
}
// Check the request type and process accordingly
try
{
if
(
"grouplist"
.
equals
(
type
))
{
String
message
=
""
;
for
(
String
groupname
:
userServiceController
.
getAllGroups
())
{
message
+=
"<groupname>"
+
groupname
+
"</groupname>"
;
}
replyMessage
(
message
,
response
,
out
);
}
else
{
username
=
username
.
trim
().
toLowerCase
();
username
=
JID
.
escapeNode
(
username
);
username
=
Stringprep
.
nodeprep
(
username
);
if
(
"add"
.
equals
(
type
))
{
userServiceController
.
createUser
(
username
,
password
,
name
,
email
,
groupNames
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"delete"
.
equals
(
type
))
{
userServiceController
.
deleteUser
(
username
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"enable"
.
equals
(
type
))
{
userServiceController
.
enableUser
(
username
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"disable"
.
equals
(
type
))
{
userServiceController
.
disableUser
(
username
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"update"
.
equals
(
type
))
{
userServiceController
.
updateUser
(
username
,
password
,
name
,
email
,
groupNames
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"add_roster"
.
equals
(
type
))
{
userServiceController
.
addRosterItem
(
username
,
item_jid
,
name
,
sub
,
groupNames
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"update_roster"
.
equals
(
type
))
{
userServiceController
.
updateRosterItem
(
username
,
item_jid
,
name
,
sub
,
groupNames
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"delete_roster"
.
equals
(
type
))
{
userServiceController
.
deleteRosterItem
(
username
,
item_jid
);
replyMessage
(
"ok"
,
response
,
out
);
}
else
if
(
"usergrouplist"
.
equals
(
type
))
{
String
message
=
""
;
for
(
String
groupname
:
userServiceController
.
getUserGroups
(
username
))
{
message
+=
"<groupname>"
+
groupname
+
"</groupname>"
;
}
replyMessage
(
message
,
response
,
out
);
}
else
{
Log
.
warn
(
"The userService servlet received an invalid request of type: "
+
type
);
// TODO Do something
}
}
}
catch
(
UserAlreadyExistsException
e
)
{
replyError
(
"UserAlreadyExistsException"
,
response
,
out
);
}
catch
(
UserNotFoundException
e
)
{
replyError
(
"UserNotFoundException"
,
response
,
out
);
}
catch
(
IllegalArgumentException
e
)
{
replyError
(
"IllegalArgumentException"
,
response
,
out
);
}
catch
(
SharedGroupException
e
)
{
replyError
(
"SharedGroupException"
,
response
,
out
);
}
catch
(
Exception
e
)
{
Log
.
error
(
"Error: "
,
e
);
replyError
(
e
.
toString
(),
response
,
out
);
}
return
Response
.
status
(
200
).
build
();
}
private
void
replyMessage
(
String
message
,
HttpServletResponse
response
,
PrintWriter
out
)
{
response
.
setContentType
(
"text/xml"
);
out
.
println
(
"<result>"
+
message
+
"</result>"
);
out
.
flush
();
}
private
void
replyError
(
String
error
,
HttpServletResponse
response
,
PrintWriter
out
)
{
response
.
setContentType
(
"text/xml"
);
out
.
println
(
"<error>"
+
error
+
"</error>"
);
out
.
flush
();
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/utils/MUCRoomUtils.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
utils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
org.xmpp.packet.JID
;
/**
* The Class MUCRoomUtils.
*/
public
class
MUCRoomUtils
{
/**
* Instantiates a new MUC room utils.
*/
private
MUCRoomUtils
()
{
throw
new
AssertionError
();
}
/**
* Convert jids to string list.
*
* @param jids
* the jids
* @return the array list< string>
*/
public
static
List
<
String
>
convertJIDsToStringList
(
Collection
<
JID
>
jids
)
{
List
<
String
>
result
=
new
ArrayList
<
String
>();
for
(
JID
jid
:
jids
)
{
result
.
add
(
jid
.
toBareJID
());
}
return
result
;
}
/**
* Convert strings to jids.
*
* @param jids
* the jids
* @return the list<jid>
*/
public
static
List
<
JID
>
convertStringsToJIDs
(
List
<
String
>
jids
)
{
List
<
JID
>
result
=
new
ArrayList
<
JID
>();
for
(
String
jidString
:
jids
)
{
result
.
add
(
new
JID
(
jidString
));
}
return
result
;
}
}
src/plugins/restAPI/src/java/org/jivesoftware/openfire/plugin/rest/utils/UserUtils.java
0 → 100644
View file @
4c2804b6
package
org
.
jivesoftware
.
openfire
.
plugin
.
rest
.
utils
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map.Entry
;
import
org.jivesoftware.openfire.XMPPServer
;
import
org.jivesoftware.openfire.plugin.rest.entity.UserEntity
;
import
org.jivesoftware.openfire.plugin.rest.entity.UserProperty
;
import
org.jivesoftware.openfire.user.User
;
import
org.jivesoftware.openfire.user.UserAlreadyExistsException
;
import
org.xmpp.packet.JID
;
// TODO: Auto-generated Javadoc
/**
* The Class UserUtils.
*/
public
class
UserUtils
{
/**
* Instantiates a new user utils.
*/
private
UserUtils
()
{
throw
new
AssertionError
();
}
/**
* Convert users to user entities.
*
* @param users the users
* @param userSearch the user search
* @return the list
*/
public
static
List
<
UserEntity
>
convertUsersToUserEntities
(
Collection
<
User
>
users
,
String
userSearch
)
{
List
<
UserEntity
>
result
=
new
ArrayList
<
UserEntity
>();
for
(
User
user
:
users
)
{
if
(
userSearch
!=
null
)
{
if
(!
user
.
getUsername
().
contains
(
userSearch
))
{
continue
;
}
}
result
.
add
(
convertUserToUserEntity
(
user
));
}
return
result
;
}
/**
* Convert user to user entity.
*
* @param user
* the user
* @return the user entity
*/
public
static
UserEntity
convertUserToUserEntity
(
User
user
)
{
UserEntity
userEntity
=
new
UserEntity
(
user
.
getUsername
(),
user
.
getName
(),
user
.
getEmail
());
List
<
UserProperty
>
userProperties
=
new
ArrayList
<
UserProperty
>();
for
(
Entry
<
String
,
String
>
property
:
user
.
getProperties
().
entrySet
())
{
userProperties
.
add
(
new
UserProperty
(
property
.
getKey
(),
property
.
getValue
()));
}
userEntity
.
setProperties
(
userProperties
);
return
userEntity
;
}
/**
* Checks if is valid sub type.
*
* @param subType the sub type
* @return true, if is valid sub type
* @throws UserAlreadyExistsException the user already exists exception
*/
public
static
void
checkSubType
(
int
subType
)
throws
UserAlreadyExistsException
{
if
(!(
subType
>=
-
1
&&
subType
<=
3
))
{
throw
new
UserAlreadyExistsException
();
}
}
/**
* Check and get jid.
*
* @param jid the jid
* @return the jid
*/
public
static
JID
checkAndGetJID
(
String
jid
)
{
if
(
isValidBareJid
(
jid
))
{
return
new
JID
(
jid
);
}
else
{
return
XMPPServer
.
getInstance
().
createJID
(
jid
,
null
);
}
}
/**
* Checks if is valid bare jid.
*
* @param jid the jid
* @return true, if is valid bare jid
*/
public
static
boolean
isValidBareJid
(
String
jid
)
{
final
int
index
=
jid
.
indexOf
(
'@'
);
if
(
index
==
-
1
)
{
return
false
;
}
else
if
(
jid
.
indexOf
(
'@'
,
index
+
1
)
!=
-
1
)
{
return
false
;
}
return
true
;
}
}
src/plugins/restAPI/src/web/WEB-INF/web-custom.xml
View file @
4c2804b6
<?xml version='1.0' encoding='ISO-8859-1'?>
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<web-app>
<!-- Servlets -->
<!-- Servlets -->
<servlet>
<servlet>
<servlet-name>
JerseyWrapper
</servlet-name>
<servlet-name>
JerseyWrapper
</servlet-name>
<servlet-class>
org.jivesoftware.openfire.plugin.rest.JerseyWrapper
</servlet-class>
<servlet-class>
org.jivesoftware.openfire.plugin.rest.service.JerseyWrapper
</servlet-class>
</servlet>
</servlet>
<!-- Servlet mappings -->
<!-- Servlet mappings -->
<servlet-mapping>
<servlet-mapping>
<servlet-name>
JerseyWrapper
</servlet-name>
<servlet-name>
JerseyWrapper
</servlet-name>
<url-pattern>
/system/*
</url-pattern>
<url-pattern>
/v1/*
</url-pattern>
</servlet-mapping>
</servlet-mapping>
</web-app>
</web-app>
src/plugins/restAPI/src/web/rest-api.jsp
View file @
4c2804b6
<%@ page
import=
"java.util.*,
<%@ page
org.jivesoftware.openfire.XMPPServer,
import=
"java.util.*,
org.jivesoftware.util.*,org.jivesoftware.openfire.plugin.rest.RESTServicePlugin"
org.jivesoftware.openfire.XMPPServer,
errorPage=
"error.jsp"
org.jivesoftware.util.*,org.jivesoftware.openfire.plugin.rest.RESTServicePlugin"
%>
errorPage=
"error.jsp"
%>
<%@ taglib
uri=
"http://java.sun.com/jstl/core_rt"
prefix=
"c"
%>
<%@ taglib
uri=
"http://java.sun.com/jstl/core_rt"
prefix=
"c"
%>
<%@ taglib
uri=
"http://java.sun.com/jstl/fmt_rt"
prefix=
"fmt"
%>
<%@ taglib
uri=
"http://java.sun.com/jstl/fmt_rt"
prefix=
"fmt"
%>
<%-- Define Administration Bean --%>
<%-- Define Administration Bean --%>
<jsp:useBean
id=
"admin"
class=
"org.jivesoftware.util.WebManager"
/>
<jsp:useBean
id=
"admin"
class=
"org.jivesoftware.util.WebManager"
/>
<c:set
var=
"admin"
value=
"
${
admin
.
manager
}
"
/>
<c:set
var=
"admin"
value=
"
${
admin
.
manager
}
"
/>
<%
<%
admin
.
init
(
request
,
response
,
session
,
application
,
out
);
admin
.
init
(
request
,
response
,
session
,
application
,
out
);
%>
%>
<%
<%
// Get parameters
// Get parameters
boolean
save
=
request
.
getParameter
(
"save"
)
!=
null
;
boolean
save
=
request
.
getParameter
(
"save"
)
!=
null
;
boolean
success
=
request
.
getParameter
(
"success"
)
!=
null
;
boolean
success
=
request
.
getParameter
(
"success"
)
!=
null
;
String
secret
=
ParamUtils
.
getParameter
(
request
,
"secret"
);
String
secret
=
ParamUtils
.
getParameter
(
request
,
"secret"
);
boolean
enabled
=
ParamUtils
.
getBooleanParameter
(
request
,
"enabled"
);
boolean
enabled
=
ParamUtils
.
getBooleanParameter
(
request
,
"enabled"
);
boolean
httpBasicAuth
=
ParamUtils
.
getBooleanParameter
(
request
,
"authtype"
);
boolean
httpBasicAuth
=
ParamUtils
.
getBooleanParameter
(
request
,
"authtype"
);
String
allowedIPs
=
ParamUtils
.
getParameter
(
request
,
"allowedIPs"
);
String
allowedIPs
=
ParamUtils
.
getParameter
(
request
,
"allowedIPs"
);
RESTServicePlugin
plugin
=
(
RESTServicePlugin
)
XMPPServer
.
getInstance
().
getPluginManager
().
getPlugin
(
"restapi"
);
RESTServicePlugin
plugin
=
(
RESTServicePlugin
)
XMPPServer
.
getInstance
().
getPluginManager
()
.
getPlugin
(
"restapi"
);
// Handle a save
Map
errors
=
new
HashMap
();
// Handle a save
if
(
save
)
{
Map
errors
=
new
HashMap
();
if
(
errors
.
size
()
==
0
)
{
if
(
save
)
{
plugin
.
setEnabled
(
enabled
);
if
(
errors
.
size
()
==
0
)
{
plugin
.
setSecret
(
secret
);
plugin
.
setEnabled
(
enabled
);
plugin
.
setHttpBasicAuth
(
httpBasicAuth
);
plugin
.
setSecret
(
secret
);
plugin
.
setAllowedIPs
(
StringUtils
.
stringToCollection
(
allowedIPs
));
plugin
.
setHttpBasicAuth
(
httpBasicAuth
);
response
.
sendRedirect
(
"rest-api.jsp?success=true"
);
plugin
.
setAllowedIPs
(
StringUtils
.
stringToCollection
(
allowedIPs
));
return
;
response
.
sendRedirect
(
"rest-api.jsp?success=true"
);
}
return
;
}
}
}
secret
=
plugin
.
getSecret
();
enabled
=
plugin
.
isEnabled
();
secret
=
plugin
.
getSecret
();
httpBasicAuth
=
plugin
.
isHttpBasicAuth
();
enabled
=
plugin
.
isEnabled
();
allowedIPs
=
StringUtils
.
collectionToString
(
plugin
.
getAllowedIPs
());
httpBasicAuth
=
plugin
.
isHttpBasicAuth
();
%>
allowedIPs
=
StringUtils
.
collectionToString
(
plugin
.
getAllowedIPs
());
%>
<html>
<head>
<html>
<title>
REST API Properties
</title>
<head>
<meta
name=
"pageID"
content=
"rest-api"
/>
<title>
REST API Properties
</title>
</head>
<meta
name=
"pageID"
content=
"rest-api"
/>
<body>
</head>
<body>
<p>
<p>
Use the form below to enable or disable the REST API and
Use the form below to enable or disable the REST API and configure the authentication.
configure the authentication.
</p>
</p>
<%
<%
if
(
success
)
{
%>
if
(
success
)
{
%>
<div
class=
"jive-success"
>
<table
cellpadding=
"0"
cellspacing=
"0"
border=
"0"
>
<div
class=
"jive-success"
>
<tbody>
<table
cellpadding=
"0"
cellspacing=
"0"
border=
"0"
>
<tr><td
class=
"jive-icon"
><img
src=
"images/success-16x16.gif"
width=
"16"
height=
"16"
border=
"0"
></td>
<tbody>
<td
class=
"jive-icon-label"
>
<tr>
REST API properties edited successfully.
<td
class=
"jive-icon"
><img
src=
"images/success-16x16.gif"
</td></tr>
width=
"16"
height=
"16"
border=
"0"
></td>
</tbody>
<td
class=
"jive-icon-label"
>
REST API properties edited
</table>
successfully.
</td>
</div><br>
</tr>
<%
}
%>
</tbody>
</table>
<form
action=
"rest-api.jsp?save"
method=
"post"
>
</div>
<br>
<fieldset>
<%
<legend>
REST API
</legend>
}
<div>
%>
<p>
The addition, deletion and editing of Openfire system properties is not normally available outside of the admin console.
<form
action=
"rest-api.jsp?save"
method=
"post"
>
This service lets those administration tasks be performed HTTP requests to provide
simple integration with other applications.
</p>
<fieldset>
<legend>
REST API
</legend>
<p>
The REST API can be secured with a shared secret key defined below or a with HTTP basic authentication.
<div>
Moreover, for extra security you can specify the list of IP addresses that are allowed to
<p>
use this service. An empty list means that the service can be accessed from any
The REST API can be secured with a shared secret key defined below
location. Addresses are delimited by commas.
or a with HTTP basic authentication.
<br
/>
Moreover, for extra
</p>
security you can specify the list of IP addresses that are allowed
<ul>
to use this service.
<br
/>
An empty list means that the service can
<input
type=
"radio"
name=
"enabled"
value=
"true"
id=
"rb01"
be accessed from any location. Addresses are delimited by commas.
<%=
((
enabled
)
?
"checked"
:
""
)
%>>
</p>
<label
for=
"rb01"
><b>
Enabled
</b>
- REST API requests will be processed.
</label>
<ul>
<br>
<input
type=
"radio"
name=
"enabled"
value=
"true"
id=
"rb01"
<input
type=
"radio"
name=
"enabled"
value=
"false"
id=
"rb02"
<%=
((
enabled
)
?
"checked"
:
""
)
%>>
<%=
((!
enabled
)
?
"checked"
:
""
)
%>>
<label
for=
"rb01"
><b>
Enabled
</b>
- REST API requests will
<label
for=
"rb02"
><b>
Disabled
</b>
- REST API requests will be ignored.
</label>
be processed.
</label>
<br><br>
<br>
<input
type=
"radio"
name=
"enabled"
value=
"false"
id=
"rb02"
<input
type=
"radio"
name=
"authtype"
value=
"true"
id=
"http_basic_auth"
<%=
((
httpBasicAuth
)
?
"checked"
:
""
)
%>>
<%=
((!
enabled
)
?
"checked"
:
""
)
%>>
<label
for=
"http_basic_auth"
>
HTTP basic auth - REST API authentication with Openfire admin account.
</label>
<label
for=
"rb02"
><b>
Disabled
</b>
- REST API requests will
<br>
be ignored.
</label>
<input
type=
"radio"
name=
"authtype"
value=
"false"
id=
"secretKeyAuth"
<%=
((!
httpBasicAuth
)
?
"checked"
:
""
)
%>>
<br>
<label
for=
"secretKeyAuth"
>
Secret key auth - REST API authentication over specified secret key.
</label>
<br>
<br>
<label
style=
"padding-left: 25px"
for=
"text_secret"
>
Secret key:
</label>
<input
type=
"radio"
name=
"authtype"
value=
"true"
<input
type=
"text"
name=
"secret"
value=
"
<%=
secret
%>
"
id=
"text_secret"
>
id=
"http_basic_auth"
<%=
((
httpBasicAuth
)
?
"checked"
:
""
)
%>>
<br><br>
<label
for=
"http_basic_auth"
>
HTTP basic auth - REST API
authentication with Openfire admin account.
</label>
<label
for=
"text_secret"
>
Allowed IP Addresses:
</label>
<br>
<textarea
name=
"allowedIPs"
cols=
"40"
rows=
"3"
wrap=
"virtual"
><%=
((
allowedIPs
!=
null
)
?
allowedIPs
:
""
)
%></textarea>
<input
type=
"radio"
name=
"authtype"
value=
"false"
</ul>
id=
"secretKeyAuth"
<%=
((!
httpBasicAuth
)
?
"checked"
:
""
)
%>>
</div>
<label
for=
"secretKeyAuth"
>
Secret key auth - REST API
</fieldset>
authentication over specified secret key.
</label>
<br>
<br><br>
<label
style=
"padding-left: 25px"
for=
"text_secret"
>
Secret
key:
</label>
<input
type=
"submit"
value=
"Save Settings"
>
<input
type=
"text"
name=
"secret"
value=
"
<%=
secret
%>
"
</form>
id=
"text_secret"
>
<br>
<br>
</body>
<label
for=
"allowedIPs"
>
Allowed IP Addresses:
</label>
<textarea
name=
"allowedIPs"
cols=
"40"
rows=
"3"
wrap=
"virtual"
><%=
((
allowedIPs
!=
null
)
?
allowedIPs
:
""
)
%></textarea>
</ul>
<p>
You can find here detailed documentation over the Openfire REST API:
<a
href=
"/plugin-admin.jsp?plugin=restapi&showReadme=true&decorator=none"
>
REST
API Documentation
</a>
</p>
</div>
</fieldset>
<br>
<br>
<input
type=
"submit"
value=
"Save Settings"
>
</form>
</body>
</html>
</html>
\ No newline at end of file
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