Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
browser-backend
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
browser-backend
Commits
1421c42b
Commit
1421c42b
authored
Apr 29, 2020
by
renjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-zrj' into 'staging'
1.微信支付bug See merge request
!31
parents
ff36b3ca
9d9c17fc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
1034 additions
and
239 deletions
+1034
-239
pom.xml
pom.xml
+9
-1
BrowserBackendApplication.java
...a/com/edgec/browserbackend/BrowserBackendApplication.java
+85
-0
AccountRepositoryCustom.java
...erbackend/account/repository/AccountRepositoryCustom.java
+2
-0
AccountRepositoryCustomImpl.java
...ckend/account/repository/AccountRepositoryCustomImpl.java
+14
-0
PaymentService.java
.../edgec/browserbackend/account/service/PaymentService.java
+3
-0
AccountServiceImpl.java
...owserbackend/account/service/impl/AccountServiceImpl.java
+12
-37
AdministratorServiceImpl.java
...ackend/account/service/impl/AdministratorServiceImpl.java
+9
-11
PaymentServiceImpl.java
...owserbackend/account/service/impl/PaymentServiceImpl.java
+158
-0
CustomUserInfoTokenServices.java
...account/service/security/CustomUserInfoTokenServices.java
+1
-0
OAuth2AuthorizationConfig.java
...browserbackend/auth/config/OAuth2AuthorizationConfig.java
+8
-2
TokenController.java
...edgec/browserbackend/auth/controller/TokenController.java
+0
-30
UserController.java
.../edgec/browserbackend/auth/controller/UserController.java
+14
-16
UsernameToken.java
...a/com/edgec/browserbackend/auth/domain/UsernameToken.java
+0
-33
MongoOAuth2AccessToken.java
...wserbackend/auth/domain/mongo/MongoOAuth2AccessToken.java
+110
-0
MongoOAuth2RefreshToken.java
...serbackend/auth/domain/mongo/MongoOAuth2RefreshToken.java
+86
-0
UsernameTokenRepository.java
...owserbackend/auth/repository/UsernameTokenRepository.java
+0
-12
MongoOAuth2AccessTokenRepository.java
...th/repository/mongo/MongoOAuth2AccessTokenRepository.java
+11
-0
MongoOAuth2AccessTokenRepositoryBase.java
...epository/mongo/MongoOAuth2AccessTokenRepositoryBase.java
+20
-0
MongoOAuth2AccessTokenRepositoryImpl.java
...epository/mongo/MongoOAuth2AccessTokenRepositoryImpl.java
+60
-0
MongoOAuth2RefreshTokenRepository.java
...h/repository/mongo/MongoOAuth2RefreshTokenRepository.java
+8
-0
MongoOAuth2RefreshTokenRepositoryBase.java
...pository/mongo/MongoOAuth2RefreshTokenRepositoryBase.java
+10
-0
MongoOAuth2RefreshTokenRepositoryImpl.java
...pository/mongo/MongoOAuth2RefreshTokenRepositoryImpl.java
+32
-0
UserServiceImpl.java
...gec/browserbackend/auth/service/Impl/UserServiceImpl.java
+2
-2
UsernameTokenServiceImpl.java
...erbackend/auth/service/Impl/UsernameTokenServiceImpl.java
+0
-76
MongoTokenStore.java
...om/edgec/browserbackend/auth/service/MongoTokenStore.java
+0
-0
UserService.java
...va/com/edgec/browserbackend/auth/service/UserService.java
+1
-1
UsernameTokenService.java
...gec/browserbackend/auth/service/UsernameTokenService.java
+0
-14
MongoUserDetailsService.java
...ackend/auth/service/security/MongoUserDetailsService.java
+33
-3
ShopServiceImpl.java
.../browserbackend/browser/service/Impl/ShopServiceImpl.java
+1
-1
PaymentTask.java
...va/com/edgec/browserbackend/browser/task/PaymentTask.java
+56
-0
RemoteShellExecutor.java
...wserbackend/common/commons/utils/RemoteShellExecutor.java
+289
-0
No files found.
pom.xml
View file @
1421c42b
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
<dependency>
<dependency>
<groupId>
org.springframework.security.oauth
</groupId>
<groupId>
org.springframework.security.oauth
</groupId>
<artifactId>
spring-security-oauth2
</artifactId>
<artifactId>
spring-security-oauth2
</artifactId>
<version>
2.4.
0
.RELEASE
</version>
<version>
2.4.
1
.RELEASE
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security.oauth.boot/spring-security-oauth2-autoconfigure -->
<!-- https://mvnrepository.com/artifact/org.springframework.security.oauth.boot/spring-security-oauth2-autoconfigure -->
<dependency>
<dependency>
...
@@ -168,6 +168,14 @@
...
@@ -168,6 +168,14 @@
<artifactId>
poi-ooxml
</artifactId>
<artifactId>
poi-ooxml
</artifactId>
<version>
3.16
</version>
<version>
3.16
</version>
</dependency>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 -->
<dependency>
<groupId>
ch.ethz.ganymed
</groupId>
<artifactId>
ganymed-ssh2
</artifactId>
<version>
262
</version>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/com/edgec/browserbackend/BrowserBackendApplication.java
View file @
1421c42b
package
com
.
edgec
.
browserbackend
;
package
com
.
edgec
.
browserbackend
;
import
com.mongodb.MongoClient
;
import
net.javacrumbs.shedlock.core.LockProvider
;
import
org.apache.catalina.Context
;
import
org.apache.catalina.Context
;
import
org.apache.catalina.connector.Connector
;
import
org.apache.catalina.connector.Connector
;
import
org.springframework.beans.factory.SmartInitializingSingleton
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
;
import
org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
;
import
org.springframework.boot.web.servlet.server.ServletWebServerFactory
;
import
org.springframework.boot.web.servlet.server.ServletWebServerFactory
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.convert.converter.Converter
;
import
org.springframework.data.convert.Jsr310Converters
;
import
org.springframework.data.mongodb.core.convert.MongoCustomConversions
;
import
org.springframework.scheduling.TaskScheduler
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer
;
import
org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer
;
import
org.springframework.security.oauth2.provider.token.AuthenticationKeyGenerator
;
import
org.springframework.security.oauth2.provider.token.DefaultAuthenticationKeyGenerator
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.filter.CorsFilter
;
import
org.springframework.web.filter.CorsFilter
;
...
@@ -19,6 +31,15 @@ import org.springframework.web.servlet.config.annotation.CorsRegistry;
...
@@ -19,6 +31,15 @@ import org.springframework.web.servlet.config.annotation.CorsRegistry;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
;
import
java.time.LocalDate
;
import
java.time.ZoneId
;
import
java.time.ZonedDateTime
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.CompletableFuture
;
@SpringBootApplication
@SpringBootApplication
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
@EnableGlobalMethodSecurity
(
prePostEnabled
=
true
)
@EnableScheduling
@EnableScheduling
...
@@ -92,4 +113,68 @@ public class BrowserBackendApplication {
...
@@ -92,4 +113,68 @@ public class BrowserBackendApplication {
// @Value("${server.port}")
// @Value("${server.port}")
// private Integer httpsPort;
// private Integer httpsPort;
@Bean
public
AuthenticationKeyGenerator
authenticationKeyGenerator
()
{
return
new
DefaultAuthenticationKeyGenerator
();
}
@Configuration
static
class
CustomConversionsConfig
{
@Autowired
ApplicationContext
context
;
@Bean
public
MongoCustomConversions
customConversions
()
{
List
<
Converter
<?,
?>>
converters
=
new
ArrayList
<>();
converters
.
addAll
(
Jsr310Converters
.
getConvertersToRegister
());
converters
.
add
(
BrowserBackendApplication
.
CustomConversionsConfig
.
DateToZonedDateTimeConverter
.
INSTANCE
);
converters
.
add
(
BrowserBackendApplication
.
CustomConversionsConfig
.
ZonedDateTimeToDateConverter
.
INSTANCE
);
return
new
MongoCustomConversions
(
converters
);
}
enum
LocalDateToStringConverter
implements
Converter
<
LocalDate
,
String
>
{
INSTANCE
;
@Override
public
String
convert
(
LocalDate
source
)
{
return
source
.
toString
();
}
}
enum
StringToLocalDateConverter
implements
Converter
<
String
,
LocalDate
>
{
INSTANCE
;
@Override
public
LocalDate
convert
(
String
source
)
{
return
LocalDate
.
parse
(
source
);
}
}
enum
DateToZonedDateTimeConverter
implements
Converter
<
Date
,
ZonedDateTime
>
{
INSTANCE
;
@Override
public
ZonedDateTime
convert
(
Date
source
)
{
return
ZonedDateTime
.
ofInstant
(
source
.
toInstant
(),
ZoneId
.
of
(
"UTC"
));
}
}
enum
ZonedDateTimeToDateConverter
implements
Converter
<
ZonedDateTime
,
Date
>
{
INSTANCE
;
@Override
public
Date
convert
(
ZonedDateTime
source
)
{
return
Date
.
from
(
source
.
toInstant
());
}
}
}
}
}
src/main/java/com/edgec/browserbackend/account/repository/AccountRepositoryCustom.java
View file @
1421c42b
...
@@ -8,6 +8,8 @@ public interface AccountRepositoryCustom {
...
@@ -8,6 +8,8 @@ public interface AccountRepositoryCustom {
List
<
String
>
findInName
(
String
[]
name
);
List
<
String
>
findInName
(
String
[]
name
);
List
<
String
>
findParents
(
List
<
String
>
names
);
void
updateRealNameAndIdCard
(
String
username
,
String
realName
,
String
idCard
);
void
updateRealNameAndIdCard
(
String
username
,
String
realName
,
String
idCard
);
Account
findByPromotion
(
String
code
);
Account
findByPromotion
(
String
code
);
...
...
src/main/java/com/edgec/browserbackend/account/repository/AccountRepositoryCustomImpl.java
View file @
1421c42b
...
@@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.aggregation.AggregationResults;
...
@@ -9,6 +9,7 @@ import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import
org.springframework.data.mongodb.core.aggregation.MatchOperation
;
import
org.springframework.data.mongodb.core.aggregation.MatchOperation
;
import
org.springframework.data.mongodb.core.aggregation.ProjectionOperation
;
import
org.springframework.data.mongodb.core.aggregation.ProjectionOperation
;
import
org.springframework.data.mongodb.core.query.BasicQuery
;
import
org.springframework.data.mongodb.core.query.BasicQuery
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.data.mongodb.core.query.Update
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
...
@@ -41,6 +42,19 @@ public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
...
@@ -41,6 +42,19 @@ public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
return
accountTelephones
;
return
accountTelephones
;
}
}
@Override
public
List
<
String
>
findParents
(
List
<
String
>
names
)
{
Document
query
=
new
Document
();
Document
fields
=
new
Document
();
fields
.
put
(
"name"
,
1
);
BasicQuery
basicQuery
=
new
BasicQuery
(
query
,
fields
);
Criteria
criteria
=
new
Criteria
();
basicQuery
.
addCriteria
(
criteria
.
orOperator
(
where
(
"name"
).
in
(
names
)));
return
null
;
}
@Override
@Override
public
void
updateRealNameAndIdCard
(
String
username
,
String
realName
,
String
idCard
)
{
public
void
updateRealNameAndIdCard
(
String
username
,
String
realName
,
String
idCard
)
{
Document
doc
=
new
Document
();
Document
doc
=
new
Document
();
...
...
src/main/java/com/edgec/browserbackend/account/service/PaymentService.java
View file @
1421c42b
...
@@ -24,4 +24,7 @@ public interface PaymentService {
...
@@ -24,4 +24,7 @@ public interface PaymentService {
boolean
alipayWithdraw
(
String
username
,
String
account
,
String
realName
,
int
amount
);
boolean
alipayWithdraw
(
String
username
,
String
account
,
String
realName
,
int
amount
);
public
UserPaymentDto
wxCheckOrderStatus
(
String
tradeno
);
public
UserPaymentDto
aliCheckOrderStatus
(
String
tradno
);
}
}
src/main/java/com/edgec/browserbackend/account/service/impl/AccountServiceImpl.java
View file @
1421c42b
...
@@ -11,50 +11,29 @@ import com.edgec.browserbackend.account.service.EmailService;
...
@@ -11,50 +11,29 @@ import com.edgec.browserbackend.account.service.EmailService;
import
com.edgec.browserbackend.account.service.SmsUtils
;
import
com.edgec.browserbackend.account.service.SmsUtils
;
import
com.edgec.browserbackend.account.utils.AccountServicePool
;
import
com.edgec.browserbackend.account.utils.AccountServicePool
;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.repository.UserRepository
;
import
com.edgec.browserbackend.auth.service.UserService
;
import
com.edgec.browserbackend.auth.service.UserAuthService
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.browser.domain.IpSummary
;
import
com.edgec.browserbackend.browser.domain.IpSummary
;
import
com.edgec.browserbackend.browser.domain.ShopSummary
;
import
com.edgec.browserbackend.browser.domain.ShopSummary
;
import
com.edgec.browserbackend.browser.dto.PageInfo
;
import
com.edgec.browserbackend.browser.dto.PageInfo
;
import
com.edgec.browserbackend.browser.dto.ShopPageResultDto
;
import
com.edgec.browserbackend.browser.dto.ShopResultDto
;
import
com.edgec.browserbackend.browser.service.IpResourceService
;
import
com.edgec.browserbackend.browser.service.IpResourceService
;
import
com.edgec.browserbackend.browser.service.ShopService
;
import
com.edgec.browserbackend.browser.service.ShopService
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
com.edgec.browserbackend.common.commons.utils.CommonStringUtils
;
import
com.edgec.browserbackend.common.utils.Aes
;
import
com.edgec.browserbackend.common.utils.Aes
;
import
com.edgec.browserbackend.common.utils.FileUtil
;
import
com.edgec.browserbackend.common.utils.FileUtil
;
import
com.mongodb.DB
;
import
com.mongodb.client.gridfs.GridFSBucket
;
import
com.mongodb.client.gridfs.GridFSDownloadStream
;
import
com.mongodb.client.gridfs.model.GridFSFile
;
import
com.mongodb.gridfs.GridFS
;
import
com.mongodb.gridfs.GridFSInputFile
;
import
org.apache.commons.io.FileUtils
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.tomcat.util.http.fileupload.FileItem
;
import
org.apache.tomcat.util.http.fileupload.disk.DiskFileItem
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.gridfs.GridFsOperations
;
import
org.springframework.data.mongodb.gridfs.GridFsResource
;
import
org.springframework.data.mongodb.gridfs.GridFsTemplate
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.Assert
;
import
org.springframework.util.Assert
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.thymeleaf.util.StringUtils
;
import
org.thymeleaf.util.StringUtils
;
import
java.io.*
;
import
java.io.*
;
import
java.nio.file.Files
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.time.YearMonth
;
import
java.time.YearMonth
;
...
@@ -62,12 +41,8 @@ import java.time.ZoneOffset;
...
@@ -62,12 +41,8 @@ import java.time.ZoneOffset;
import
java.time.ZonedDateTime
;
import
java.time.ZonedDateTime
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.regex.Pattern
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
org
.
springframework
.
data
.
mongodb
.
core
.
query
.
Query
.
query
;
import
static
org
.
springframework
.
data
.
mongodb
.
gridfs
.
GridFsCriteria
.
whereFilename
;
@Service
@Service
@Transactional
@Transactional
@ComponentScan
(
"com.edgec.browserbackend.account.repository"
)
@ComponentScan
(
"com.edgec.browserbackend.account.repository"
)
...
@@ -105,7 +80,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -105,7 +80,7 @@ public class AccountServiceImpl implements AccountService {
private
InvoiceRepository
invoiceRepository
;
private
InvoiceRepository
invoiceRepository
;
@Autowired
@Autowired
private
User
AuthService
userAuth
Service
;
private
User
Service
user
Service
;
@Autowired
@Autowired
private
ShopService
shopService
;
private
ShopService
shopService
;
...
@@ -424,7 +399,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -424,7 +399,7 @@ public class AccountServiceImpl implements AccountService {
}
}
public
void
deleteByName
(
String
name
)
{
public
void
deleteByName
(
String
name
)
{
user
Auth
Service
.
deleteUser
(
name
);
userService
.
deleteUser
(
name
);
repository
.
deleteById
(
name
);
repository
.
deleteById
(
name
);
}
}
...
@@ -443,7 +418,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -443,7 +418,7 @@ public class AccountServiceImpl implements AccountService {
throw
new
ClientRequestException
(
AccountErrorCode
.
UNKNOWN
,
"Invalid Request"
);
throw
new
ClientRequestException
(
AccountErrorCode
.
UNKNOWN
,
"Invalid Request"
);
}
}
user
Auth
Service
.
deleteUser
(
child
);
userService
.
deleteUser
(
child
);
repository
.
delete
(
childAccount
);
repository
.
delete
(
childAccount
);
Account
parentAccount
=
repository
.
findByName
(
parent
);
Account
parentAccount
=
repository
.
findByName
(
parent
);
parentAccount
.
setChildCount
(
parentAccount
.
getChildCount
()
-
1
);
parentAccount
.
setChildCount
(
parentAccount
.
getChildCount
()
-
1
);
...
@@ -518,7 +493,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -518,7 +493,7 @@ public class AccountServiceImpl implements AccountService {
user
.
setEnabled
(
true
);
user
.
setEnabled
(
true
);
user
Auth
Service
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
user
));
userService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
user
));
repository
.
save
(
account
);
repository
.
save
(
account
);
JSONObject
param
=
new
JSONObject
();
JSONObject
param
=
new
JSONObject
();
...
@@ -573,7 +548,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -573,7 +548,7 @@ public class AccountServiceImpl implements AccountService {
emailService
.
sendEmailVerification
(
user
.
getUsername
(),
user
.
getEmail
(),
user
.
getVerificationCode
());
emailService
.
sendEmailVerification
(
user
.
getUsername
(),
user
.
getEmail
(),
user
.
getVerificationCode
());
user
Auth
Service
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
user
));
userService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
user
));
repository
.
save
(
account
);
repository
.
save
(
account
);
log
.
info
(
"new account has been created: "
+
account
.
getName
());
log
.
info
(
"new account has been created: "
+
account
.
getName
());
...
@@ -701,7 +676,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -701,7 +676,7 @@ public class AccountServiceImpl implements AccountService {
authUser
.
setEmail
(
user
.
getEmail
());
authUser
.
setEmail
(
user
.
getEmail
());
authUser
.
setEnabled
(
true
);
authUser
.
setEnabled
(
true
);
authUser
.
setPermission
(
user
.
getPermission
());
authUser
.
setPermission
(
user
.
getPermission
());
user
Auth
Service
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
authUser
));
userService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
authUser
));
Account
account
=
new
Account
(
user
);
Account
account
=
new
Account
(
user
);
List
<
String
>
whiteList
=
new
ArrayList
<>();
List
<
String
>
whiteList
=
new
ArrayList
<>();
...
@@ -775,7 +750,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -775,7 +750,7 @@ public class AccountServiceImpl implements AccountService {
authUser
.
setPermission
(
subUsersRequestDto
.
getPermission
());
authUser
.
setPermission
(
subUsersRequestDto
.
getPermission
());
else
else
authUser
.
setPermission
(
0
);
authUser
.
setPermission
(
0
);
user
Auth
Service
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
authUser
));
userService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
authUser
));
Account
account
=
new
Account
(
user
);
Account
account
=
new
Account
(
user
);
account
.
setPhoneNumber
(
existing
.
getPhoneNumber
());
account
.
setPhoneNumber
(
existing
.
getPhoneNumber
());
...
@@ -837,7 +812,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -837,7 +812,7 @@ public class AccountServiceImpl implements AccountService {
if
(
subUsersRequestDto
.
getPassword
()
!=
null
)
{
if
(
subUsersRequestDto
.
getPassword
()
!=
null
)
{
user
.
setPassword
(
Aes
.
aesDecrypt
(
subUsersRequestDto
.
getPassword
()));
user
.
setPassword
(
Aes
.
aesDecrypt
(
subUsersRequestDto
.
getPassword
()));
}
}
user
Auth
Service
.
resetUserPassword
(
user
);
userService
.
resetUserPassword
(
user
);
}
}
if
(
subUsersRequestDto
.
getNickname
()
!=
null
)
if
(
subUsersRequestDto
.
getNickname
()
!=
null
)
...
@@ -902,7 +877,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -902,7 +877,7 @@ public class AccountServiceImpl implements AccountService {
User
newuser
=
new
User
();
User
newuser
=
new
User
();
newuser
.
setUsername
(
account
.
getName
());
newuser
.
setUsername
(
account
.
getName
());
newuser
.
setEmail
(
update
.
getEmail
());
newuser
.
setEmail
(
update
.
getEmail
());
user
Auth
Service
.
updateUser
(
name
,
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newuser
));
userService
.
updateUser
(
name
,
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newuser
));
}
}
repository
.
save
(
account
);
repository
.
save
(
account
);
return
account
;
return
account
;
...
@@ -922,7 +897,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -922,7 +897,7 @@ public class AccountServiceImpl implements AccountService {
newuser
.
setUsername
(
account
.
getName
());
newuser
.
setUsername
(
account
.
getName
());
String
code
=
UUID
.
randomUUID
().
toString
()
+
System
.
currentTimeMillis
();
String
code
=
UUID
.
randomUUID
().
toString
()
+
System
.
currentTimeMillis
();
newuser
.
setVerificationCode
(
code
);
newuser
.
setVerificationCode
(
code
);
user
Auth
Service
.
reset
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newuser
));
userService
.
reset
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newuser
));
emailService
.
sendResetPassword
(
account
.
getName
(),
account
.
getEmail
(),
code
);
emailService
.
sendResetPassword
(
account
.
getName
(),
account
.
getEmail
(),
code
);
log
.
info
(
"password has been reset for: "
+
user
);
log
.
info
(
"password has been reset for: "
+
user
);
...
@@ -964,7 +939,7 @@ public class AccountServiceImpl implements AccountService {
...
@@ -964,7 +939,7 @@ public class AccountServiceImpl implements AccountService {
client
.
setUsername
(
account
.
getName
());
client
.
setUsername
(
account
.
getName
());
client
.
setPassword
(
user
.
getPassword
());
client
.
setPassword
(
user
.
getPassword
());
user
Auth
Service
.
resetUserPassword
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
client
));
userService
.
resetUserPassword
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
client
));
}
}
...
...
src/main/java/com/edgec/browserbackend/account/service/impl/AdministratorServiceImpl.java
View file @
1421c42b
...
@@ -8,10 +8,9 @@ import com.edgec.browserbackend.account.dto.PromotionQueryResultDto;
...
@@ -8,10 +8,9 @@ import com.edgec.browserbackend.account.dto.PromotionQueryResultDto;
import
com.edgec.browserbackend.account.exception.AccountErrorCode
;
import
com.edgec.browserbackend.account.exception.AccountErrorCode
;
import
com.edgec.browserbackend.account.repository.*
;
import
com.edgec.browserbackend.account.repository.*
;
import
com.edgec.browserbackend.account.service.AdministratorService
;
import
com.edgec.browserbackend.account.service.AdministratorService
;
import
com.edgec.browserbackend.auth.service.User
Auth
Service
;
import
com.edgec.browserbackend.auth.service.UserService
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.browser.repository.IpResourceRepository
;
import
com.edgec.browserbackend.browser.repository.IpResourceRepository
;
import
com.edgec.browserbackend.common.charge.ChargeType
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -26,7 +25,6 @@ import org.springframework.stereotype.Service;
...
@@ -26,7 +25,6 @@ import org.springframework.stereotype.Service;
import
java.text.ParseException
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.time.YearMonth
;
import
java.time.ZoneOffset
;
import
java.time.ZoneOffset
;
import
java.time.ZonedDateTime
;
import
java.time.ZonedDateTime
;
import
java.util.*
;
import
java.util.*
;
...
@@ -54,7 +52,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -54,7 +52,7 @@ public class AdministratorServiceImpl implements AdministratorService {
private
UserBillingRepository
userBillingRepository
;
private
UserBillingRepository
userBillingRepository
;
@Autowired
@Autowired
private
User
AuthService
userAuth
Service
;
private
User
Service
user
Service
;
@Autowired
@Autowired
private
IpResourceRepository
ipResourceRepository
;
private
IpResourceRepository
ipResourceRepository
;
...
@@ -75,7 +73,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -75,7 +73,7 @@ public class AdministratorServiceImpl implements AdministratorService {
newUser
.
setPassword
(
administrator
.
getPassword
());
newUser
.
setPassword
(
administrator
.
getPassword
());
newUser
.
setEnabled
(
true
);
newUser
.
setEnabled
(
true
);
user
Auth
Service
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newUser
));
userService
.
create
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newUser
));
administrator1
.
setPassword
(
""
);
administrator1
.
setPassword
(
""
);
administratorRepository
.
save
(
administrator1
);
administratorRepository
.
save
(
administrator1
);
...
@@ -191,7 +189,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -191,7 +189,7 @@ public class AdministratorServiceImpl implements AdministratorService {
User
newUser
=
new
User
();
User
newUser
=
new
User
();
newUser
.
setUsername
(
name
);
newUser
.
setUsername
(
name
);
user
Auth
Service
.
unlock
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newUser
),
"unlock"
);
userService
.
unlock
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
newUser
),
"unlock"
);
return
newAccount
;
return
newAccount
;
}
}
...
@@ -206,7 +204,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -206,7 +204,7 @@ public class AdministratorServiceImpl implements AdministratorService {
User
abnormalUser
=
new
User
();
User
abnormalUser
=
new
User
();
abnormalUser
.
setUsername
(
name
);
abnormalUser
.
setUsername
(
name
);
user
Auth
Service
.
lock
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
abnormalUser
),
"lock"
);
userService
.
lock
(
new
com
.
edgec
.
browserbackend
.
auth
.
domain
.
User
(
abnormalUser
),
"lock"
);
accountRepository
.
save
(
abnormalAccount
);
accountRepository
.
save
(
abnormalAccount
);
...
@@ -249,7 +247,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -249,7 +247,7 @@ public class AdministratorServiceImpl implements AdministratorService {
if
(
administrator
==
null
)
{
if
(
administrator
==
null
)
{
throw
new
ClientRequestException
(
AccountErrorCode
.
UNKNOWN
,
"Invalid Request"
);
throw
new
ClientRequestException
(
AccountErrorCode
.
UNKNOWN
,
"Invalid Request"
);
}
}
user
Auth
Service
.
deleteUser
(
name
);
userService
.
deleteUser
(
name
);
administratorRepository
.
delete
(
administrator
);
administratorRepository
.
delete
(
administrator
);
}
}
...
@@ -261,7 +259,7 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -261,7 +259,7 @@ public class AdministratorServiceImpl implements AdministratorService {
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
,
"can't find adminstrator with name "
+
name
);
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
,
"can't find adminstrator with name "
+
name
);
}
}
updating
.
setRole
(
roles
);
updating
.
setRole
(
roles
);
user
Auth
Service
.
updateRoles
(
name
,
roles
);
userService
.
updateRoles
(
name
,
roles
);
administratorRepository
.
save
(
updating
);
administratorRepository
.
save
(
updating
);
return
updating
;
return
updating
;
...
@@ -312,13 +310,13 @@ public class AdministratorServiceImpl implements AdministratorService {
...
@@ -312,13 +310,13 @@ public class AdministratorServiceImpl implements AdministratorService {
@Override
@Override
public
boolean
getUserLockState
(
String
name
)
{
public
boolean
getUserLockState
(
String
name
)
{
return
user
Auth
Service
.
lockState
(
name
);
return
userService
.
lockState
(
name
);
}
}
@Override
@Override
public
void
deleteUser
(
String
username
)
{
public
void
deleteUser
(
String
username
)
{
user
Auth
Service
.
deleteUser
(
username
);
userService
.
deleteUser
(
username
);
accountRepository
.
deleteById
(
username
);
accountRepository
.
deleteById
(
username
);
}
}
...
...
src/main/java/com/edgec/browserbackend/account/service/impl/PaymentServiceImpl.java
View file @
1421c42b
...
@@ -685,4 +685,162 @@ public class PaymentServiceImpl implements PaymentService {
...
@@ -685,4 +685,162 @@ public class PaymentServiceImpl implements PaymentService {
}
}
}
}
@Override
public
UserPaymentDto
wxCheckOrderStatus
(
String
tradeno
)
{
UserPaymentDto
result
=
new
UserPaymentDto
();
result
.
setPaid
(
false
);
try
{
UserPayment
byTradeNo
=
userPaymentRepository
.
findByTradeNo
(
tradeno
);
if
(
PaymentMethod
.
ALIPAY
.
equals
(
byTradeNo
.
getPaymentMethod
()))
return
aliCheckOrderStatus
(
tradeno
);
UserBalance
balance
=
userBalanceRepository
.
findById
(
byTradeNo
.
getUsername
()).
orElse
(
null
);
if
(
balance
!=
null
)
result
.
setBalance
(
Math
.
round
(
balance
.
getBalanced
()));
if
(
byTradeNo
==
null
)
return
result
;
if
(
byTradeNo
.
isSucceed
())
{
result
.
setPaid
(
true
);
return
result
;
}
Account
byName
=
accountService
.
findByName
(
byTradeNo
.
getUsername
());
if
(
byName
==
null
)
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
,
"account does not exist: "
+
byTradeNo
.
getUsername
());
boolean
isVpsClient
=
true
;
WXPayConfig
ourWxPayConfig
=
isVpsClient
?
new
FGLWxConfig
()
:
new
CloudamWxConfig
();
WXPay
wxPay
=
new
WXPay
(
ourWxPayConfig
);
Map
<
String
,
String
>
data
=
new
HashMap
<>();
data
.
put
(
"appid"
,
ourWxPayConfig
.
getAppID
());
data
.
put
(
"mch_id"
,
ourWxPayConfig
.
getMchID
());
//商户号
data
.
put
(
"out_trade_no"
,
tradeno
);
//交易号
data
.
put
(
"nonce_str"
,
SmsUtils
.
createRandom
(
false
,
24
));
// 随机字符串小于32位
String
s
=
WXPayUtil
.
generateSignature
(
data
,
ourWxPayConfig
.
getKey
());
//签名
data
.
put
(
"sign"
,
s
);
Map
<
String
,
String
>
respData
=
wxPay
.
orderQuery
(
data
);
if
(
respData
.
get
(
"return_code"
).
equals
(
"SUCCESS"
)
&&
respData
.
get
(
"return_msg"
).
equals
(
"OK"
)
&&
"SUCCESS"
.
equals
(
respData
.
get
(
"result_code"
)))
{
/**
*
SUCCESS—支付成功
REFUND—转入退款
NOTPAY—未支付
CLOSED—已关闭
REVOKED—已撤销(付款码支付)
USERPAYING--用户支付中(付款码支付)
PAYERROR--支付失败(其他原因,如银行返回失败) *
*/
result
.
setStatus
(
respData
.
get
(
"trade_state"
));
if
(
"SUCCESS"
.
equals
(
respData
.
get
(
"trade_state"
)))
{
byTradeNo
.
setSucceed
(
true
);
boolean
b
=
userPaymentRepository
.
updatePaymentResult
(
byTradeNo
,
true
);
if
(
b
)
{
if
(
balance
==
null
)
{
balance
=
new
UserBalance
();
balance
.
setUsername
(
byTradeNo
.
getUsername
());
}
balance
.
setBalanced
(
balance
.
getBalanced
()
+
byTradeNo
.
getAmount
());
userBalanceRepository
.
save
(
balance
);
}
result
.
setBalance
(
Math
.
round
(
balance
.
getBalanced
()));
result
.
setPaid
(
true
);
return
result
;
}
}
result
.
setPaid
(
false
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Wechat payment order generation fails"
,
e
);
result
.
setPaid
(
false
);
}
return
result
;
}
@Override
public
UserPaymentDto
aliCheckOrderStatus
(
String
tradno
)
{
UserPaymentDto
result
=
new
UserPaymentDto
();
result
.
setPaid
(
false
);
try
{
UserPayment
byTradeNo
=
userPaymentRepository
.
findByTradeNo
(
tradno
);
UserBalance
balance
=
userBalanceRepository
.
findById
(
byTradeNo
.
getUsername
()).
orElse
(
null
);
if
(
balance
!=
null
)
result
.
setBalance
(
Math
.
round
(
balance
.
getBalanced
()));
if
(
byTradeNo
==
null
)
return
result
;
if
(
byTradeNo
.
isSucceed
())
{
result
.
setPaid
(
true
);
return
result
;
}
Account
byName
=
accountService
.
findByName
(
byTradeNo
.
getUsername
());
if
(
byName
==
null
)
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
,
"account does not exist: "
+
byTradeNo
.
getUsername
());
boolean
isVpsClient
=
true
;
AlipayConfig
alipayConfig
=
isVpsClient
?
new
VpsAlipayConfig
()
:
new
CloudamAlipayConfig
();
AlipayClient
alipayClient
=
new
DefaultAlipayClient
(
alipayConfig
.
getURL
(),
alipayConfig
.
getAPPID
(),
alipayConfig
.
getAPP_PRIVATE_KEY
(),
"json"
,
alipayConfig
.
getCHARSET
(),
alipayConfig
.
getALIPAY_PUBLIC_KEY
(),
alipayConfig
.
getSIGN_TYPE
());
AlipayTradeQueryRequest
alipayRequest
=
new
AlipayTradeQueryRequest
();
String
out_trade_no
=
byTradeNo
.
getTradeNo
();
alipayRequest
.
setBizContent
(
""
+
"{"
+
"\"out_trade_no\":\""
+
out_trade_no
+
"\""
+
"}"
);
AlipayTradeQueryResponse
response
=
alipayClient
.
execute
(
alipayRequest
);
log
.
error
(
"ali order status :"
+
JSONObject
.
toJSONString
(
response
));
result
.
setStatus
(
convertAlipayStatus
(
response
.
getTradeStatus
()));
if
(
"TRADE_SUCCESS"
.
equals
(
response
.
getTradeStatus
())
||
"TRADE_FINISHED"
.
equals
(
response
.
getTradeStatus
()))
{
byTradeNo
.
setSucceed
(
true
);
boolean
b
=
userPaymentRepository
.
updatePaymentResult
(
byTradeNo
,
true
);
if
(
b
)
{
if
(
balance
==
null
)
{
balance
=
new
UserBalance
();
balance
.
setUsername
(
byTradeNo
.
getUsername
());
}
balance
.
setBalanced
(
balance
.
getBalanced
()
+
byTradeNo
.
getAmount
());
userBalanceRepository
.
save
(
balance
);
}
result
.
setBalance
(
Math
.
round
(
balance
.
getBalanced
()));
result
.
setPaid
(
true
);
return
result
;
}
result
.
setPaid
(
false
);
}
catch
(
Exception
e
)
{
log
.
error
(
"Alipay payment order generation fails"
,
e
);
result
.
setPaid
(
false
);
}
return
result
;
}
}
}
src/main/java/com/edgec/browserbackend/account/service/security/CustomUserInfoTokenServices.java
View file @
1421c42b
...
@@ -17,6 +17,7 @@ import org.springframework.security.oauth2.common.OAuth2AccessToken;
...
@@ -17,6 +17,7 @@ import org.springframework.security.oauth2.common.OAuth2AccessToken;
import
org.springframework.security.oauth2.common.exceptions.InvalidTokenException
;
import
org.springframework.security.oauth2.common.exceptions.InvalidTokenException
;
import
org.springframework.security.oauth2.provider.OAuth2Authentication
;
import
org.springframework.security.oauth2.provider.OAuth2Authentication
;
import
org.springframework.security.oauth2.provider.OAuth2Request
;
import
org.springframework.security.oauth2.provider.OAuth2Request
;
import
org.springframework.security.oauth2.provider.token.AuthorizationServerTokenServices
;
import
org.springframework.security.oauth2.provider.token.ResourceServerTokenServices
;
import
org.springframework.security.oauth2.provider.token.ResourceServerTokenServices
;
import
java.util.*
;
import
java.util.*
;
...
...
src/main/java/com/edgec/browserbackend/auth/config/OAuth2AuthorizationConfig.java
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
config
;
package
com
.
edgec
.
browserbackend
.
auth
.
config
;
import
com.edgec.browserbackend.auth.service.MongoTokenStore
;
import
com.edgec.browserbackend.auth.service.security.MongoUserDetailsService
;
import
com.edgec.browserbackend.auth.service.security.MongoUserDetailsService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
...
@@ -24,7 +25,10 @@ import org.springframework.security.oauth2.provider.token.store.InMemoryTokenSto
...
@@ -24,7 +25,10 @@ import org.springframework.security.oauth2.provider.token.store.InMemoryTokenSto
public
class
OAuth2AuthorizationConfig
extends
AuthorizationServerConfigurerAdapter
{
public
class
OAuth2AuthorizationConfig
extends
AuthorizationServerConfigurerAdapter
{
private
final
String
NOOP_PASSWORD_ENCODE
=
"{noop}"
;
private
final
String
NOOP_PASSWORD_ENCODE
=
"{noop}"
;
private
TokenStore
tokenStore
=
new
InMemoryTokenStore
();
@Autowired
private
MongoTokenStore
mongoTokenStore
;
@Autowired
@Autowired
@Qualifier
(
"authenticationManagerBean"
)
@Qualifier
(
"authenticationManagerBean"
)
private
AuthenticationManager
authenticationManager
;
private
AuthenticationManager
authenticationManager
;
...
@@ -48,6 +52,8 @@ public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdap
...
@@ -48,6 +52,8 @@ public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdap
.
withClient
(
"browser"
)
.
withClient
(
"browser"
)
.
authorizedGrantTypes
(
"refresh_token"
,
"password"
)
.
authorizedGrantTypes
(
"refresh_token"
,
"password"
)
.
scopes
(
"browser"
)
.
scopes
(
"browser"
)
.
accessTokenValiditySeconds
(
43200
)
.
refreshTokenValiditySeconds
(
43200
)
.
and
()
.
and
()
.
withClient
(
"cloudam-browser"
)
.
withClient
(
"cloudam-browser"
)
.
secret
(
env
.
getProperty
(
"ACCOUNT_SERVICE_PASSWORD"
))
.
secret
(
env
.
getProperty
(
"ACCOUNT_SERVICE_PASSWORD"
))
...
@@ -59,7 +65,7 @@ public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdap
...
@@ -59,7 +65,7 @@ public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdap
@Override
@Override
public
void
configure
(
AuthorizationServerEndpointsConfigurer
endpoints
)
throws
Exception
{
public
void
configure
(
AuthorizationServerEndpointsConfigurer
endpoints
)
throws
Exception
{
endpoints
endpoints
.
tokenStore
(
t
okenStore
)
.
tokenStore
(
mongoT
okenStore
)
.
authenticationManager
(
authenticationManager
)
.
authenticationManager
(
authenticationManager
)
.
userDetailsService
(
userDetailsService
).
exceptionTranslator
(
oAuthResponseExceptionTranslator
);
.
userDetailsService
(
userDetailsService
).
exceptionTranslator
(
oAuthResponseExceptionTranslator
);
}
}
...
...
src/main/java/com/edgec/browserbackend/auth/controller/TokenController.java
deleted
100644 → 0
View file @
ff36b3ca
package
com
.
edgec
.
browserbackend
.
auth
.
controller
;
import
com.edgec.browserbackend.auth.domain.UsernameToken
;
import
com.edgec.browserbackend.auth.service.UsernameTokenService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.security.Principal
;
import
java.util.List
;
@RestController
public
class
TokenController
{
@Autowired
private
UsernameTokenService
usernameTokenService
;
@RequestMapping
(
path
=
"/token"
,
method
=
RequestMethod
.
GET
)
public
List
<
UsernameToken
>
selectVpsDtoByParent
(
Principal
principal
)
{
return
usernameTokenService
.
selectVpsDtoByParent
(
principal
.
getName
());
}
@RequestMapping
(
path
=
"/token"
,
method
=
RequestMethod
.
POST
)
public
UsernameToken
createToken
(
Principal
principal
,
@RequestParam
(
value
=
"username"
)
String
username
)
{
return
usernameTokenService
.
createUserToken
(
principal
.
getName
(),
username
);
}
}
src/main/java/com/edgec/browserbackend/auth/controller/UserController.java
View file @
1421c42b
...
@@ -3,11 +3,9 @@ package com.edgec.browserbackend.auth.controller;
...
@@ -3,11 +3,9 @@ package com.edgec.browserbackend.auth.controller;
import
com.edgec.browserbackend.account.dto.ResultDto
;
import
com.edgec.browserbackend.account.dto.ResultDto
;
import
com.edgec.browserbackend.auth.domain.User
;
import
com.edgec.browserbackend.auth.domain.User
;
import
com.edgec.browserbackend.auth.domain.UserPasswordReset
;
import
com.edgec.browserbackend.auth.domain.UserPasswordReset
;
import
com.edgec.browserbackend.auth.service.User
Auth
Service
;
import
com.edgec.browserbackend.auth.service.UserService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.security.core.token.TokenService
;
import
org.springframework.security.oauth2.provider.token.ConsumerTokenServices
;
import
org.springframework.security.oauth2.provider.token.ConsumerTokenServices
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
...
@@ -22,7 +20,7 @@ import java.util.Map;
...
@@ -22,7 +20,7 @@ import java.util.Map;
public
class
UserController
{
public
class
UserController
{
@Autowired
@Autowired
private
User
AuthService
userAuth
Service
;
private
User
Service
user
Service
;
@Autowired
@Autowired
ConsumerTokenServices
consumerTokenServices
;
ConsumerTokenServices
consumerTokenServices
;
...
@@ -44,41 +42,41 @@ public class UserController {
...
@@ -44,41 +42,41 @@ public class UserController {
@RequestMapping
(
path
=
"/{name}/roles/{roles}"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/{name}/roles/{roles}"
,
method
=
RequestMethod
.
PUT
)
public
void
updateRoles
(
@PathVariable
String
name
,
@PathVariable
String
roles
)
{
public
void
updateRoles
(
@PathVariable
String
name
,
@PathVariable
String
roles
)
{
user
Auth
Service
.
updateRoles
(
name
,
roles
);
userService
.
updateRoles
(
name
,
roles
);
}
}
@RequestMapping
(
path
=
"/{name}/addroles/{roles}"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/{name}/addroles/{roles}"
,
method
=
RequestMethod
.
PUT
)
public
void
addRoles
(
@PathVariable
String
name
,
@PathVariable
String
roles
)
{
public
void
addRoles
(
@PathVariable
String
name
,
@PathVariable
String
roles
)
{
user
Auth
Service
.
addRoles
(
name
,
roles
);
userService
.
addRoles
(
name
,
roles
);
}
}
@RequestMapping
(
method
=
RequestMethod
.
POST
)
@RequestMapping
(
method
=
RequestMethod
.
POST
)
public
void
createUser
(
@Valid
@RequestBody
User
user
)
{
public
void
createUser
(
@Valid
@RequestBody
User
user
)
{
user
Auth
Service
.
create
(
user
);
userService
.
create
(
user
);
}
}
@RequestMapping
(
value
=
"/resetpasswd"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/resetpasswd"
,
method
=
RequestMethod
.
POST
)
public
void
resetUserPassword
(
@Valid
@RequestBody
User
user
)
{
public
void
resetUserPassword
(
@Valid
@RequestBody
User
user
)
{
user
Auth
Service
.
resetUserPassword
(
user
);
userService
.
resetUserPassword
(
user
);
}
}
@RequestMapping
(
path
=
"/current/{name}"
,
method
=
RequestMethod
.
DELETE
)
@RequestMapping
(
path
=
"/current/{name}"
,
method
=
RequestMethod
.
DELETE
)
public
void
deleteUser
(
@PathVariable
String
name
)
{
public
void
deleteUser
(
@PathVariable
String
name
)
{
user
Auth
Service
.
deleteUser
(
name
);
userService
.
deleteUser
(
name
);
}
}
@RequestMapping
(
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
method
=
RequestMethod
.
PUT
)
public
void
resetUser
(
@Valid
@RequestBody
User
user
)
{
public
void
resetUser
(
@Valid
@RequestBody
User
user
)
{
user
Auth
Service
.
reset
(
user
);
userService
.
reset
(
user
);
}
}
@RequestMapping
(
path
=
"/{lockOrUnlock}"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/{lockOrUnlock}"
,
method
=
RequestMethod
.
PUT
)
public
void
lockOrUnlockUser
(
@Valid
@RequestBody
User
user
,
@PathVariable
String
lockOrUnlock
)
{
//@RequestParam("by") String by,
public
void
lockOrUnlockUser
(
@Valid
@RequestBody
User
user
,
@PathVariable
String
lockOrUnlock
)
{
//@RequestParam("by") String by,
if
(
"lock"
.
equals
(
lockOrUnlock
)){
if
(
"lock"
.
equals
(
lockOrUnlock
)){
user
Auth
Service
.
lock
(
user
,
lockOrUnlock
);
userService
.
lock
(
user
,
lockOrUnlock
);
}
}
else
if
(
"unlock"
.
equals
(
lockOrUnlock
)){
else
if
(
"unlock"
.
equals
(
lockOrUnlock
)){
user
Auth
Service
.
unlock
(
user
,
lockOrUnlock
);
userService
.
unlock
(
user
,
lockOrUnlock
);
}
}
}
}
...
@@ -89,19 +87,19 @@ public class UserController {
...
@@ -89,19 +87,19 @@ public class UserController {
@RequestMapping
(
path
=
"/{name}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
path
=
"/{name}"
,
method
=
RequestMethod
.
GET
)
public
boolean
lockState
(
@PathVariable
String
name
)
{
public
boolean
lockState
(
@PathVariable
String
name
)
{
return
user
Auth
Service
.
lockState
(
name
);
return
userService
.
lockState
(
name
);
}
}
@RequestMapping
(
path
=
"/verify/{name}/{code}"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/verify/{name}/{code}"
,
method
=
RequestMethod
.
PUT
)
public
void
verifyCode
(
@PathVariable
String
name
,
@PathVariable
String
code
)
{
public
void
verifyCode
(
@PathVariable
String
name
,
@PathVariable
String
code
)
{
user
Auth
Service
.
verifyCode
(
name
,
code
);
userService
.
verifyCode
(
name
,
code
);
}
}
@RequestMapping
(
path
=
"/changepass"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/changepass"
,
method
=
RequestMethod
.
PUT
)
public
ResultDto
changePassword
(
@Valid
@RequestBody
UserPasswordReset
userPasswordReset
)
{
public
ResultDto
changePassword
(
@Valid
@RequestBody
UserPasswordReset
userPasswordReset
)
{
ResultDto
resultDto
=
new
ResultDto
();
ResultDto
resultDto
=
new
ResultDto
();
try
{
try
{
resultDto
.
setData
(
user
Auth
Service
.
changePassword
(
userPasswordReset
));
resultDto
.
setData
(
userService
.
changePassword
(
userPasswordReset
));
resultDto
.
setStatus
(
0
);
resultDto
.
setStatus
(
0
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
resultDto
.
setStatus
(-
1
);
resultDto
.
setStatus
(-
1
);
...
@@ -116,7 +114,7 @@ public class UserController {
...
@@ -116,7 +114,7 @@ public class UserController {
@PreAuthorize
(
"#oauth2.hasScope('server')"
)
@PreAuthorize
(
"#oauth2.hasScope('server')"
)
@RequestMapping
(
path
=
"/updateuser"
,
method
=
RequestMethod
.
PUT
)
@RequestMapping
(
path
=
"/updateuser"
,
method
=
RequestMethod
.
PUT
)
public
void
updateUser
(
@Valid
@RequestBody
User
user
,
@RequestParam
String
username
)
{
//@RequestParam("by") String by,
public
void
updateUser
(
@Valid
@RequestBody
User
user
,
@RequestParam
String
username
)
{
//@RequestParam("by") String by,
user
Auth
Service
.
updateUser
(
username
,
user
);
userService
.
updateUser
(
username
,
user
);
}
}
...
...
src/main/java/com/edgec/browserbackend/auth/domain/UsernameToken.java
deleted
100644 → 0
View file @
ff36b3ca
package
com
.
edgec
.
browserbackend
.
auth
.
domain
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
@Document
(
collection
=
"usernametoken"
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
UsernameToken
{
@Id
private
String
username
;
private
String
token
;
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getToken
()
{
return
token
;
}
public
void
setToken
(
String
token
)
{
this
.
token
=
token
;
}
}
src/main/java/com/edgec/browserbackend/auth/domain/mongo/MongoOAuth2AccessToken.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
domain
.
mongo
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.PersistenceConstructor
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.time.Instant
;
import
java.util.Arrays
;
import
java.util.Objects
;
@Document
public
class
MongoOAuth2AccessToken
{
@Id
private
String
tokenId
;
private
byte
[]
token
;
private
String
authenticationId
;
private
String
username
;
private
String
clientId
;
private
byte
[]
authentication
;
private
String
refreshToken
;
private
long
createdAt
;
public
MongoOAuth2AccessToken
()
{
}
@PersistenceConstructor
public
MongoOAuth2AccessToken
(
final
String
tokenId
,
final
byte
[]
token
,
final
String
authenticationId
,
final
String
username
,
final
String
clientId
,
final
byte
[]
authentication
,
final
String
refreshToken
)
{
this
.
tokenId
=
tokenId
;
this
.
token
=
token
;
this
.
authenticationId
=
authenticationId
;
this
.
username
=
username
;
this
.
clientId
=
clientId
;
this
.
authentication
=
authentication
;
this
.
refreshToken
=
refreshToken
;
this
.
createdAt
=
Instant
.
now
().
toEpochMilli
();
}
public
String
getTokenId
()
{
return
tokenId
;
}
public
byte
[]
getToken
()
{
return
token
;
}
public
String
getAuthenticationId
()
{
return
authenticationId
;
}
public
String
getUsername
()
{
return
username
;
}
public
String
getClientId
()
{
return
clientId
;
}
public
byte
[]
getAuthentication
()
{
return
authentication
;
}
public
String
getRefreshToken
()
{
return
refreshToken
;
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
token
,
authenticationId
,
username
,
clientId
,
authentication
,
refreshToken
);
}
@Override
public
boolean
equals
(
Object
obj
)
{
if
(
this
==
obj
)
{
return
true
;
}
if
(
obj
==
null
||
getClass
()
!=
obj
.
getClass
())
{
return
false
;
}
final
MongoOAuth2AccessToken
other
=
(
MongoOAuth2AccessToken
)
obj
;
return
Objects
.
equals
(
this
.
token
,
other
.
token
)
&&
Objects
.
equals
(
this
.
authenticationId
,
other
.
authenticationId
)
&&
Objects
.
equals
(
this
.
username
,
other
.
username
)
&&
Objects
.
equals
(
this
.
clientId
,
other
.
clientId
)
&&
Objects
.
equals
(
this
.
authentication
,
other
.
authentication
)
&&
Objects
.
equals
(
this
.
refreshToken
,
other
.
refreshToken
);
}
@Override
public
String
toString
()
{
return
"MongoOAuth2AccessToken{"
+
"tokenId='"
+
tokenId
+
'\''
+
", token="
+
Arrays
.
toString
(
token
)
+
", authenticationId='"
+
authenticationId
+
'\''
+
", username='"
+
username
+
'\''
+
", clientId='"
+
clientId
+
'\''
+
", authentication="
+
Arrays
.
toString
(
authentication
)
+
", refreshToken='"
+
refreshToken
+
'\''
+
'}'
;
}
public
long
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
long
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
}
src/main/java/com/edgec/browserbackend/auth/domain/mongo/MongoOAuth2RefreshToken.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
domain
.
mongo
;
import
org.apache.commons.lang3.builder.EqualsBuilder
;
import
org.apache.commons.lang3.builder.HashCodeBuilder
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.PersistenceConstructor
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.time.Instant
;
@Document
public
class
MongoOAuth2RefreshToken
{
@Id
private
String
tokenId
;
private
byte
[]
token
;
private
byte
[]
authentication
;
private
long
createdAt
;
public
MongoOAuth2RefreshToken
()
{
}
@PersistenceConstructor
public
MongoOAuth2RefreshToken
(
final
String
tokenId
,
final
byte
[]
token
,
final
byte
[]
authentication
)
{
this
.
tokenId
=
tokenId
;
this
.
token
=
token
;
this
.
authentication
=
authentication
;
this
.
createdAt
=
Instant
.
now
().
toEpochMilli
();
}
public
String
getTokenId
()
{
return
tokenId
;
}
public
byte
[]
getToken
()
{
return
token
;
}
public
byte
[]
getAuthentication
()
{
return
authentication
;
}
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
return
true
;
if
(!(
o
instanceof
MongoOAuth2RefreshToken
))
return
false
;
MongoOAuth2RefreshToken
that
=
(
MongoOAuth2RefreshToken
)
o
;
return
new
EqualsBuilder
()
.
append
(
tokenId
,
that
.
tokenId
)
.
append
(
token
,
that
.
token
)
.
append
(
authentication
,
that
.
authentication
)
.
isEquals
();
}
@Override
public
int
hashCode
()
{
return
new
HashCodeBuilder
(
17
,
37
)
.
append
(
tokenId
)
.
append
(
token
)
.
append
(
authentication
)
.
toHashCode
();
}
@Override
public
String
toString
()
{
return
new
ToStringBuilder
(
this
)
.
append
(
"tokenId"
,
tokenId
)
.
append
(
"token"
,
token
)
.
append
(
"authentication"
,
authentication
)
.
toString
();
}
public
long
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
long
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
}
src/main/java/com/edgec/browserbackend/auth/repository/UsernameTokenRepository.java
deleted
100644 → 0
View file @
ff36b3ca
package
com
.
edgec
.
browserbackend
.
auth
.
repository
;
import
com.edgec.browserbackend.auth.domain.UsernameToken
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
UsernameTokenRepository
extends
MongoRepository
<
UsernameToken
,
String
>
{
UsernameToken
findByUsername
(
String
username
);
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2AccessTokenRepository.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2AccessToken
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
java.util.List
;
public
interface
MongoOAuth2AccessTokenRepository
extends
MongoRepository
<
MongoOAuth2AccessToken
,
String
>,
MongoOAuth2AccessTokenRepositoryBase
{
List
<
MongoOAuth2AccessToken
>
findByCreatedAtGreaterThan
(
long
validtime
);
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2AccessTokenRepositoryBase.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2AccessToken
;
import
java.util.List
;
public
interface
MongoOAuth2AccessTokenRepositoryBase
{
MongoOAuth2AccessToken
findByTokenId
(
String
tokenId
);
boolean
deleteByTokenId
(
String
tokenId
);
boolean
deleteByRefreshTokenId
(
String
refreshTokenId
);
MongoOAuth2AccessToken
findByAuthenticationId
(
String
key
);
List
<
MongoOAuth2AccessToken
>
findByUsernameAndClientId
(
String
username
,
String
clientId
);
List
<
MongoOAuth2AccessToken
>
findByClientId
(
String
clientId
);
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2AccessTokenRepositoryImpl.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2AccessToken
;
import
com.mongodb.client.result.DeleteResult
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
@Component
public
class
MongoOAuth2AccessTokenRepositoryImpl
implements
MongoOAuth2AccessTokenRepositoryBase
{
public
static
final
String
ID
=
"_id"
;
private
final
MongoTemplate
mongoTemplate
;
public
MongoOAuth2AccessTokenRepositoryImpl
(
final
MongoTemplate
mongoTemplate
)
{
this
.
mongoTemplate
=
mongoTemplate
;
}
@Override
public
MongoOAuth2AccessToken
findByTokenId
(
final
String
tokenId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
ID
).
is
(
tokenId
));
return
mongoTemplate
.
findOne
(
query
,
MongoOAuth2AccessToken
.
class
);
}
@Override
public
boolean
deleteByTokenId
(
final
String
tokenId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
ID
).
is
(
tokenId
));
final
DeleteResult
deleteResult
=
mongoTemplate
.
remove
(
query
,
MongoOAuth2AccessToken
.
class
);
return
deleteResult
.
wasAcknowledged
();
}
@Override
public
boolean
deleteByRefreshTokenId
(
String
refreshTokenId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
"refreshToken"
).
is
(
refreshTokenId
));
final
DeleteResult
deleteResult
=
mongoTemplate
.
remove
(
query
,
MongoOAuth2AccessToken
.
class
);
return
deleteResult
.
wasAcknowledged
();
}
@Override
public
MongoOAuth2AccessToken
findByAuthenticationId
(
String
key
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
"authenticationId"
).
is
(
key
));
return
mongoTemplate
.
findOne
(
query
,
MongoOAuth2AccessToken
.
class
);
}
@Override
public
List
<
MongoOAuth2AccessToken
>
findByUsernameAndClientId
(
final
String
username
,
final
String
clientId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
"username"
).
is
(
username
).
andOperator
(
Criteria
.
where
(
"clientId"
).
is
(
clientId
)));
return
mongoTemplate
.
find
(
query
,
MongoOAuth2AccessToken
.
class
);
}
@Override
public
List
<
MongoOAuth2AccessToken
>
findByClientId
(
final
String
clientId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
"clientId"
).
is
(
clientId
));
return
mongoTemplate
.
find
(
query
,
MongoOAuth2AccessToken
.
class
);
}
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2RefreshTokenRepository.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2RefreshToken
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
public
interface
MongoOAuth2RefreshTokenRepository
extends
MongoRepository
<
MongoOAuth2RefreshToken
,
String
>,
MongoOAuth2RefreshTokenRepositoryBase
{
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2RefreshTokenRepositoryBase.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2RefreshToken
;
public
interface
MongoOAuth2RefreshTokenRepositoryBase
{
MongoOAuth2RefreshToken
findByTokenId
(
String
tokenId
);
boolean
deleteByTokenId
(
String
tokenId
);
}
src/main/java/com/edgec/browserbackend/auth/repository/mongo/MongoOAuth2RefreshTokenRepositoryImpl.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
auth
.
repository
.
mongo
;
import
com.edgec.browserbackend.auth.domain.mongo.MongoOAuth2RefreshToken
;
import
com.mongodb.client.result.DeleteResult
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Component
;
@Component
public
class
MongoOAuth2RefreshTokenRepositoryImpl
implements
MongoOAuth2RefreshTokenRepositoryBase
{
public
static
final
String
ID
=
"_id"
;
private
MongoTemplate
mongoTemplate
;
public
MongoOAuth2RefreshTokenRepositoryImpl
(
final
MongoTemplate
mongoTemplate
)
{
this
.
mongoTemplate
=
mongoTemplate
;
}
@Override
public
MongoOAuth2RefreshToken
findByTokenId
(
final
String
tokenId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
ID
).
is
(
tokenId
));
return
mongoTemplate
.
findOne
(
query
,
MongoOAuth2RefreshToken
.
class
);
}
@Override
public
boolean
deleteByTokenId
(
final
String
tokenId
)
{
final
Query
query
=
Query
.
query
(
Criteria
.
where
(
ID
).
is
(
tokenId
));
final
DeleteResult
deleteResult
=
mongoTemplate
.
remove
(
query
,
MongoOAuth2RefreshToken
.
class
);
return
deleteResult
.
wasAcknowledged
();
}
}
src/main/java/com/edgec/browserbackend/auth/service/Impl/User
Auth
ServiceImpl.java
→
src/main/java/com/edgec/browserbackend/auth/service/Impl/UserServiceImpl.java
View file @
1421c42b
...
@@ -6,7 +6,7 @@ import com.edgec.browserbackend.auth.domain.UserPasswordReset;
...
@@ -6,7 +6,7 @@ import com.edgec.browserbackend.auth.domain.UserPasswordReset;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.repository.RolesRepository
;
import
com.edgec.browserbackend.auth.repository.RolesRepository
;
import
com.edgec.browserbackend.auth.repository.UserRepository
;
import
com.edgec.browserbackend.auth.repository.UserRepository
;
import
com.edgec.browserbackend.auth.service.User
Auth
Service
;
import
com.edgec.browserbackend.auth.service.UserService
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
...
@@ -18,7 +18,7 @@ import org.springframework.stereotype.Service;
import
java.util.Optional
;
import
java.util.Optional
;
@Service
@Service
public
class
User
AuthServiceImpl
implements
UserAuth
Service
{
public
class
User
ServiceImpl
implements
User
Service
{
private
static
final
BCryptPasswordEncoder
encoder
=
new
BCryptPasswordEncoder
();
private
static
final
BCryptPasswordEncoder
encoder
=
new
BCryptPasswordEncoder
();
private
final
Logger
log
=
LoggerFactory
.
getLogger
(
getClass
());
private
final
Logger
log
=
LoggerFactory
.
getLogger
(
getClass
());
...
...
src/main/java/com/edgec/browserbackend/auth/service/Impl/UsernameTokenServiceImpl.java
deleted
100644 → 0
View file @
ff36b3ca
package
com
.
edgec
.
browserbackend
.
auth
.
service
.
Impl
;
import
com.edgec.browserbackend.account.domain.Account
;
import
com.edgec.browserbackend.account.domain.AccountDto
;
import
com.edgec.browserbackend.account.domain.UserDto
;
import
com.edgec.browserbackend.account.service.AccountService
;
import
com.edgec.browserbackend.auth.domain.UsernameToken
;
import
com.edgec.browserbackend.auth.exception.AuthErrorCode
;
import
com.edgec.browserbackend.auth.repository.UsernameTokenRepository
;
import
com.edgec.browserbackend.auth.service.UsernameTokenService
;
import
com.edgec.browserbackend.common.commons.error.ClientRequestException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.UUID
;
import
java.util.stream.Collectors
;
@Service
public
class
UsernameTokenServiceImpl
implements
UsernameTokenService
{
@Autowired
private
UsernameTokenRepository
usernameTokenRepository
;
@Autowired
private
AccountService
accountSecrvice
;
@Override
public
List
<
UsernameToken
>
selectVpsDtoByParent
(
String
username
)
{
List
<
UserDto
>
userDtos
=
accountSecrvice
.
getAllDesendentUsers
(
username
,
0
);
List
<
UsernameToken
>
usernameTokens
=
userDtos
.
stream
().
map
(
userDto
->
{
return
usernameTokenRepository
.
findByUsername
(
userDto
.
getUsername
());
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
toList
());
UsernameToken
parentToken
=
usernameTokenRepository
.
findByUsername
(
username
);
if
(
parentToken
!=
null
)
{
usernameTokens
.
add
(
parentToken
);
}
return
usernameTokens
;
}
public
UsernameToken
createUsername
(
String
username
)
{
String
token
=
UUID
.
randomUUID
().
toString
();
UsernameToken
usernameToken
=
new
UsernameToken
();
usernameToken
.
setToken
(
token
);
usernameToken
.
setUsername
(
username
);
usernameTokenRepository
.
save
(
usernameToken
);
return
usernameToken
;
}
@Override
public
UsernameToken
getUserToken
(
String
username
)
{
return
usernameTokenRepository
.
findByUsername
(
username
);
}
public
UsernameToken
createUserToken
(
String
owner
,
String
targetUser
)
{
Account
account
=
accountSecrvice
.
findByName
(
targetUser
);
if
(
owner
.
equals
(
account
.
getParent
())
||
owner
.
equals
(
targetUser
))
{
String
token
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
);
UsernameToken
usernameToken
=
new
UsernameToken
();
usernameToken
.
setToken
(
token
);
usernameToken
.
setUsername
(
targetUser
);
usernameTokenRepository
.
save
(
usernameToken
);
return
usernameToken
;
}
throw
new
ClientRequestException
(
AuthErrorCode
.
AUTHORIZATION_ERROR
);
}
}
src/main/java/com/edgec/browserbackend/auth/service/MongoTokenStore.java
0 → 100644
View file @
1421c42b
This diff is collapsed.
Click to expand it.
src/main/java/com/edgec/browserbackend/auth/service/User
Auth
Service.java
→
src/main/java/com/edgec/browserbackend/auth/service/UserService.java
View file @
1421c42b
...
@@ -4,7 +4,7 @@ package com.edgec.browserbackend.auth.service;
...
@@ -4,7 +4,7 @@ package com.edgec.browserbackend.auth.service;
import
com.edgec.browserbackend.auth.domain.User
;
import
com.edgec.browserbackend.auth.domain.User
;
import
com.edgec.browserbackend.auth.domain.UserPasswordReset
;
import
com.edgec.browserbackend.auth.domain.UserPasswordReset
;
public
interface
User
Auth
Service
{
public
interface
UserService
{
void
create
(
User
user
);
void
create
(
User
user
);
...
...
src/main/java/com/edgec/browserbackend/auth/service/UsernameTokenService.java
deleted
100644 → 0
View file @
ff36b3ca
package
com
.
edgec
.
browserbackend
.
auth
.
service
;
import
com.edgec.browserbackend.auth.domain.UsernameToken
;
import
java.util.List
;
public
interface
UsernameTokenService
{
List
<
UsernameToken
>
selectVpsDtoByParent
(
String
username
);
UsernameToken
createUserToken
(
String
owner
,
String
targetUser
);
UsernameToken
getUserToken
(
String
username
);
}
src/main/java/com/edgec/browserbackend/auth/service/security/MongoUserDetailsService.java
View file @
1421c42b
...
@@ -11,12 +11,11 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
...
@@ -11,12 +11,11 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.security.core.userdetails.UsernameNotFoundException
;
import
org.springframework.security.core.userdetails.UsernameNotFoundException
;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Optional
;
@Service
@Service
public
class
MongoUserDetailsService
implements
UserDetailsService
{
public
class
MongoUserDetailsService
implements
UserDetailsService
{
...
@@ -27,6 +26,8 @@ public class MongoUserDetailsService implements UserDetailsService {
...
@@ -27,6 +26,8 @@ public class MongoUserDetailsService implements UserDetailsService {
@Autowired
@Autowired
private
RolesRepository
rolesRepository
;
private
RolesRepository
rolesRepository
;
private
final
List
<
String
>
TEMPORARY_ACCESS_USERNAME_SUFFIX
=
Arrays
.
asList
(
"@intellicost"
);
@Override
@Override
public
UserDetails
loadUserByUsername
(
String
username
)
throws
UsernameNotFoundException
{
public
UserDetails
loadUserByUsername
(
String
username
)
throws
UsernameNotFoundException
{
...
@@ -40,6 +41,15 @@ public class MongoUserDetailsService implements UserDetailsService {
...
@@ -40,6 +41,15 @@ public class MongoUserDetailsService implements UserDetailsService {
user
=
repository
.
findByPhone
(
username
).
orElse
(
null
);
user
=
repository
.
findByPhone
(
username
).
orElse
(
null
);
}
}
if
(
user
==
null
)
{
try
{
user
=
genTemporaryAccessUser
(
username
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
user
=
null
;
}
}
if
(
user
==
null
)
if
(
user
==
null
)
throw
new
UsernameNotFoundException
(
username
);
throw
new
UsernameNotFoundException
(
username
);
...
@@ -59,4 +69,24 @@ public class MongoUserDetailsService implements UserDetailsService {
...
@@ -59,4 +69,24 @@ public class MongoUserDetailsService implements UserDetailsService {
return
user
;
return
user
;
}
}
/**
* For angelia and intellicost temporary access
*
* @param username uuid@intellicost
* @return
*/
private
User
genTemporaryAccessUser
(
String
username
)
{
if
(
StringUtils
.
isBlank
(
username
)
||
TEMPORARY_ACCESS_USERNAME_SUFFIX
.
stream
().
noneMatch
(
username:
:
contains
))
{
return
null
;
}
User
temporaryUser
=
new
User
();
temporaryUser
.
setUsername
(
username
);
temporaryUser
.
setEmail
(
username
);
temporaryUser
.
setEnabled
(
true
);
String
pwd
=
username
.
split
(
"@"
)[
0
];
temporaryUser
.
setPassword
(
new
BCryptPasswordEncoder
().
encode
(
Base64
.
getEncoder
().
encodeToString
(
pwd
.
getBytes
())));
return
temporaryUser
;
}
}
}
src/main/java/com/edgec/browserbackend/browser/service/Impl/ShopServiceImpl.java
View file @
1421c42b
...
@@ -308,7 +308,7 @@ public class ShopServiceImpl implements ShopService {
...
@@ -308,7 +308,7 @@ public class ShopServiceImpl implements ShopService {
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
);
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
);
}
}
UserShop
userShop
=
userShopRepository
.
findByUsernameAndShopId
(
username
,
shopId
);
UserShop
userShop
=
userShopRepository
.
findByUsernameAndShopId
(
username
,
shopId
);
if
(
account
.
getPermission
()
<
8
||
userShop
==
null
)
{
if
(
userShop
==
null
)
{
throw
new
ClientRequestException
(
AccountErrorCode
.
NOPERMISSION
);
throw
new
ClientRequestException
(
AccountErrorCode
.
NOPERMISSION
);
}
}
Shop
shop
=
shopRepository
.
findById
(
shopId
).
orElse
(
null
);
Shop
shop
=
shopRepository
.
findById
(
shopId
).
orElse
(
null
);
...
...
src/main/java/com/edgec/browserbackend/browser/task/PaymentTask.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
browser
.
task
;
import
com.edgec.browserbackend.account.domain.PaymentMethod
;
import
com.edgec.browserbackend.account.domain.UserPayment
;
import
com.edgec.browserbackend.account.repository.UserPaymentRepository
;
import
com.edgec.browserbackend.account.service.PaymentService
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
java.time.ZoneId
;
import
java.time.ZonedDateTime
;
import
java.util.Date
;
import
java.util.List
;
@Component
public
class
PaymentTask
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
PaymentTask
.
class
);
@Autowired
private
UserPaymentRepository
userPaymentRepository
;
@Autowired
private
PaymentService
paymentService
;
@Scheduled
(
fixedDelay
=
60000
)
public
void
checkPayments
()
{
long
now
=
new
Date
().
getTime
();
Date
date_5min
=
new
Date
(
now
-
5
*
60
*
1000
);
Date
date_10min
=
new
Date
(
now
-
10
*
60
*
1000
);
List
<
UserPayment
>
unfinishedPayments
=
userPaymentRepository
.
findAllByPaymentDateBetweenAndSucceed
(
ZonedDateTime
.
ofInstant
(
date_10min
.
toInstant
(),
ZoneId
.
systemDefault
())
,
ZonedDateTime
.
ofInstant
(
date_5min
.
toInstant
(),
ZoneId
.
systemDefault
()),
false
);
if
(
unfinishedPayments
!=
null
&&
unfinishedPayments
.
size
()
>
0
)
{
unfinishedPayments
.
stream
().
forEach
(
payment
->
{
PaymentMethod
paymentMethod
=
payment
.
getPaymentMethod
();
try
{
if
(
PaymentMethod
.
WECHAT
.
equals
(
paymentMethod
))
{
paymentService
.
wxCheckOrderStatus
(
payment
.
getTradeNo
());
}
else
if
(
PaymentMethod
.
ALIPAY
.
equals
(
paymentMethod
))
{
paymentService
.
aliCheckOrderStatus
(
payment
.
getTradeNo
());
}
}
catch
(
Exception
e
)
{
log
.
error
(
"checkPayments"
,
e
);
}
});
}
}
}
src/main/java/com/edgec/browserbackend/common/commons/utils/RemoteShellExecutor.java
0 → 100644
View file @
1421c42b
package
com
.
edgec
.
browserbackend
.
common
.
commons
.
utils
;
import
ch.ethz.ssh2.*
;
import
org.apache.commons.io.IOUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.*
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharsets
;
public
class
RemoteShellExecutor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
RemoteShellExecutor
.
class
);
private
Connection
conn
;
/** 远程机器IP */
private
String
ip
;
/** 用户名 */
private
String
osUsername
;
/** 密码 */
private
String
password
;
private
String
charset
=
Charset
.
defaultCharset
().
toString
();
private
static
final
int
TIME_OUT
=
1000
*
5
*
60
;
public
RemoteShellExecutor
(
String
ip
,
String
usr
,
String
pasword
)
{
this
.
ip
=
ip
;
this
.
osUsername
=
usr
;
this
.
password
=
pasword
;
}
/**
* 登录
* @return
* @throws IOException
*/
public
Boolean
login
()
{
boolean
flg
=
false
;
try
{
conn
=
new
Connection
(
ip
);
conn
.
connect
();
// 连接
//判断身份是否已经认证
if
(!
conn
.
isAuthenticationComplete
())
{
//加锁,防止多线程调用时线程间判断不一致,导致出现重复认证
synchronized
(
this
)
{
if
(!
conn
.
isAuthenticationComplete
())
{
//进行身份认证
flg
=
conn
.
authenticateWithPassword
(
osUsername
,
password
);
}
}
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalStateException
e
)
{
e
.
printStackTrace
();
}
return
flg
;
}
public
void
executeCommand
(
String
command
,
Session
session
)
throws
Exception
{
String
outStr
=
""
;
String
outErr
=
""
;
if
(
command
.
equals
(
""
))
{
logger
.
info
(
"执行空指令"
);
}
PrintWriter
out
=
null
;
try
{
out
=
new
PrintWriter
(
new
OutputStreamWriter
(
session
.
getStdin
(),
"UTF-8"
));
out
.
println
(
command
);
out
.
flush
();
}
finally
{
if
(
null
!=
out
)
{
out
.
close
();
}
}
}
/**
* 执行脚本
*
* @param cmds
* @return
* @throws Exception
*/
public
int
exec
(
String
cmds
)
throws
Exception
{
InputStream
stdOut
=
null
;
InputStream
stdErr
=
null
;
String
outStr
=
""
;
String
outErr
=
""
;
int
ret
=
-
1
;
try
{
if
(
login
())
{
// Open a new {@link Session} on this connection
Session
session
=
conn
.
openSession
();
// Execute a command on the remote machine.
session
.
execCommand
(
cmds
);
stdOut
=
new
StreamGobbler
(
session
.
getStdout
());
outStr
=
processStream
(
stdOut
,
charset
);
stdErr
=
new
StreamGobbler
(
session
.
getStderr
());
outErr
=
processStream
(
stdErr
,
charset
);
session
.
waitForCondition
(
ChannelCondition
.
EXIT_STATUS
,
TIME_OUT
);
System
.
out
.
println
(
"outStr="
+
outStr
);
System
.
out
.
println
(
"outErr="
+
outErr
);
ret
=
session
.
getExitStatus
();
}
else
{
throw
new
Exception
(
"登录远程机器失败"
+
ip
);
// 自定义异常类 实现略
}
}
finally
{
if
(
conn
!=
null
)
{
conn
.
close
();
}
IOUtils
.
closeQuietly
(
stdOut
);
IOUtils
.
closeQuietly
(
stdErr
);
}
return
ret
;
}
private
String
processStream
(
InputStream
in
,
String
charset
)
throws
Exception
{
byte
[]
buf
=
new
byte
[
1024
];
StringBuilder
sb
=
new
StringBuilder
();
while
(
in
.
read
(
buf
)
!=
-
1
)
{
sb
.
append
(
new
String
(
buf
,
charset
));
}
return
sb
.
toString
();
}
private
String
processStdErr
(
InputStream
in
,
String
charset
)
throws
IOException
{
BufferedReader
br
=
new
BufferedReader
(
new
InputStreamReader
(
in
,
charset
));
StringBuffer
sb
=
new
StringBuffer
();
if
(
in
.
available
()
!=
0
)
{
while
(
true
)
{
String
line
=
br
.
readLine
();
if
(
line
==
null
)
break
;
sb
.
append
(
line
).
append
(
System
.
getProperty
(
"line.separator"
));
}
}
return
sb
.
toString
();
}
/**
* 执行脚本
*
* @param cmds
* @return
* @throws Exception
*/
public
int
execCommand
(
String
cmds
)
throws
Exception
{
InputStream
stdOut
=
null
;
InputStream
stdErr
=
null
;
String
outStr
=
""
;
String
outErr
=
""
;
int
ret
=
-
1
;
try
{
if
(
login
())
{
Session
session
=
conn
.
openSession
();
// 建立虚拟终端
session
.
requestPTY
(
"bash"
);
// 打开一个Shell
session
.
startShell
();
stdOut
=
new
StreamGobbler
(
session
.
getStdout
());
stdErr
=
new
StreamGobbler
(
session
.
getStderr
());
BufferedReader
stdoutReader
=
new
BufferedReader
(
new
InputStreamReader
(
stdOut
));
BufferedReader
stderrReader
=
new
BufferedReader
(
new
InputStreamReader
(
stdErr
));
// 准备输入命令
PrintWriter
out
=
new
PrintWriter
(
session
.
getStdin
());
// 输入待执行命令
out
.
println
(
cmds
);
out
.
println
(
"exit"
);
// 6. 关闭输入流
out
.
close
();
// 7. 等待,除非1.连接关闭;2.输出数据传送完毕;3.进程状态为退出;4.超时
session
.
waitForCondition
(
ChannelCondition
.
CLOSED
|
ChannelCondition
.
EOF
|
ChannelCondition
.
EXIT_STATUS
,
30000
);
logger
.
error
(
"Here is the output from stdout:"
);
while
(
true
)
{
String
line
=
stdoutReader
.
readLine
();
if
(
line
==
null
)
break
;
System
.
out
.
println
(
line
);
}
logger
.
error
(
"Here is the output from stderr:"
);
while
(
true
)
{
String
line
=
stderrReader
.
readLine
();
if
(
line
==
null
)
break
;
System
.
out
.
println
(
line
);
}
/* Show exit status, if available (otherwise "null") */
logger
.
error
(
"ExitCode: "
+
session
.
getExitStatus
());
ret
=
session
.
getExitStatus
();
session
.
close
();
/* Close this session */
conn
.
close
();
/* Close the connection */
}
else
{
throw
new
Exception
(
"登录远程机器失败"
+
ip
);
// 自定义异常类 实现略
}
}
finally
{
if
(
conn
!=
null
)
{
conn
.
close
();
}
IOUtils
.
closeQuietly
(
stdOut
);
IOUtils
.
closeQuietly
(
stdErr
);
}
return
ret
;
}
/**
* 远程传输单个文件
*
* @param localFile
* @param remoteTargetDirectory
* @throws IOException
*/
public
void
transferFile
(
String
localFile
,
String
remoteTargetDirectory
)
throws
Exception
{
File
file
=
new
File
(
localFile
);
if
(
file
.
isDirectory
())
{
throw
new
RuntimeException
(
localFile
+
" is not a file"
);
}
String
fileName
=
file
.
getName
();
System
.
out
.
println
(
fileName
);
try
{
Session
session
=
conn
.
openSession
();
executeCommand
(
"mkdir -p "
+
remoteTargetDirectory
,
session
);
}
catch
(
Exception
e
)
{
throw
new
Exception
(
"登录远程机器失败"
+
ip
);
}
SCPClient
sCPClient
=
conn
.
createSCPClient
();
SCPOutputStream
scpOutputStream
=
sCPClient
.
put
(
fileName
,
file
.
length
(),
remoteTargetDirectory
,
"0600"
);
String
content
=
IOUtils
.
toString
(
new
FileInputStream
(
file
),
StandardCharsets
.
UTF_8
);
scpOutputStream
.
write
(
content
.
getBytes
());
scpOutputStream
.
flush
();
scpOutputStream
.
close
();
}
/**
* 传输整个目录
*
* @param localDirectory
* @param remoteTargetDirectory
* @throws IOException
*/
public
void
transferDirectory
(
String
localDirectory
,
String
remoteTargetDirectory
)
throws
Exception
{
File
dir
=
new
File
(
localDirectory
);
if
(!
dir
.
isDirectory
())
{
throw
new
RuntimeException
(
localDirectory
+
" is not directory"
);
}
String
[]
files
=
dir
.
list
();
for
(
String
file
:
files
)
{
if
(
file
.
startsWith
(
"."
))
{
continue
;
}
String
fullName
=
localDirectory
+
"/"
+
file
;
if
(
new
File
(
fullName
).
isDirectory
())
{
String
rdir
=
remoteTargetDirectory
+
"/"
+
file
;
exec
(
"mkdir -p "
+
remoteTargetDirectory
+
"/"
+
file
);
transferDirectory
(
fullName
,
rdir
);
}
else
{
transferFile
(
fullName
,
remoteTargetDirectory
);
}
}
}
public
static
void
main
(
String
args
[])
throws
Exception
{
RemoteShellExecutor
executor
=
new
RemoteShellExecutor
(
"120.25.233.237"
,
"root"
,
"5t8EsTuDH00uaA1"
);
executor
.
transferFile
(
"3proxy.cfg"
,
"/root"
);
// executor.execCommand("cd /root && sh restart.sh");
}
}
\ 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