Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
yujianwangzivayy
MaxKey
提交
b9c7210d
MaxKey
项目概览
yujianwangzivayy
/
MaxKey
与 Fork 源项目一致
Fork自
MaxKey单点登录官方(MaxKeyTop) / MaxKey
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MaxKey
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b9c7210d
编写于
4月 14, 2022
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Jobs
上级
ecc9247b
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
151 addition
and
139 deletion
+151
-139
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/online/AbstractOnlineTicketService.java
.../org/maxkey/authn/online/AbstractOnlineTicketService.java
+2
-2
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/online/OnlineTicketService.java
...ain/java/org/maxkey/authn/online/OnlineTicketService.java
+5
-0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java
...axkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java
+56
-72
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java
...-web-mgt/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java
+0
-8
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/AbstractScheduleJob.java
...gt/src/main/java/org/maxkey/jobs/AbstractScheduleJob.java
+19
-0
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/AccountsStrategyJob.java
...gt/src/main/java/org/maxkey/jobs/AccountsStrategyJob.java
+17
-24
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java
...b-mgt/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java
+17
-23
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/DynamicRolesJob.java
...eb-mgt/src/main/java/org/maxkey/jobs/DynamicRolesJob.java
+1
-1
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/OnlineTicketListenerJob.java
...rc/main/java/org/maxkey/jobs/OnlineTicketListenerJob.java
+34
-2
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java
.../maxkey/web/access/contorller/LoginSessionController.java
+0
-7
未找到文件。
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/online/AbstractOnlineTicketService.java
浏览文件 @
b9c7210d
...
...
@@ -46,8 +46,8 @@ public class AbstractOnlineTicketService implements OnlineTicketService{
private
static
final
String
HISTORY_LOGOUT_UPDATE_STATEMENT
=
"update mxk_history_login set logouttime = ? ,sessionstatus = 7 where sessionid = ?"
;
public
List
<
HistoryLogin
>
query
()
{
@Override
public
List
<
HistoryLogin
>
query
OnlineTicket
()
{
List
<
HistoryLogin
>
listOnlineTicket
=
jdbcTemplate
.
query
(
DEFAULT_DEFAULT_SELECT_STATEMENT
,
new
OnlineTicketRowMapper
());
...
...
maxkey-authentications/maxkey-authentication-core/src/main/java/org/maxkey/authn/online/OnlineTicketService.java
浏览文件 @
b9c7210d
...
...
@@ -18,6 +18,9 @@
package
org.maxkey.authn.online
;
import
java.time.LocalTime
;
import
java.util.List
;
import
org.maxkey.entity.HistoryLogin
;
public
interface
OnlineTicketService
{
...
...
@@ -33,5 +36,7 @@ public interface OnlineTicketService {
public
void
setValiditySeconds
(
int
validitySeconds
);
public
List
<
HistoryLogin
>
queryOnlineTicket
();
public
void
terminate
(
String
onlineTicket
,
String
userId
,
String
username
);
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtJobs.java
浏览文件 @
b9c7210d
...
...
@@ -17,13 +17,12 @@
package
org.maxkey
;
import
org.maxkey.authn.online.OnlineTicketService
;
import
org.maxkey.jobs.AccountsStrategyJob
;
import
org.maxkey.jobs.DynamicGroupsJob
;
import
org.maxkey.persistence.repository.LoginHistoryRepository
;
import
org.maxkey.persistence.repository.LoginRepository
;
import
org.maxkey.jobs.OnlineTicketListenerJob
;
import
org.maxkey.persistence.service.AccountsService
;
import
org.maxkey.persistence.service.GroupsService
;
import
org.opensaml.xml.ConfigurationException
;
import
org.quartz.CronScheduleBuilder
;
import
org.quartz.CronTrigger
;
import
org.quartz.Job
;
...
...
@@ -45,58 +44,78 @@ import org.springframework.scheduling.quartz.SchedulerFactoryBean;
public
class
MaxKeyMgtJobs
implements
InitializingBean
{
private
static
final
Logger
_logger
=
LoggerFactory
.
getLogger
(
MaxKeyMgtJobs
.
class
);
/**
* schedulerJobsInit.
* @return schedulerJobsInit
* @throws ConfigurationException
* @throws SchedulerException
*/
@Bean
(
name
=
"schedulerJobs"
)
public
String
schedulerJobs
(
@Bean
(
name
=
"schedulerTicketListenerJobs"
)
public
String
ticketListenerJob
(
SchedulerFactoryBean
schedulerFactoryBean
,
OnlineTicketService
onlineTicketService
)
throws
SchedulerException
{
JobDataMap
jobDataMap
=
new
JobDataMap
();
jobDataMap
.
put
(
"service"
,
onlineTicketService
);
addJobScheduler
(
OnlineTicketListenerJob
.
class
,
schedulerFactoryBean
,
jobDataMap
,
"* 10 * * * ? "
,
//10 minutes
"TicketListener"
);
return
"schedulerTicketListenerJobs"
;
}
@Bean
(
name
=
"schedulerDynamicGroupsJobs"
)
public
String
dynamicGroupsJobs
(
SchedulerFactoryBean
schedulerFactoryBean
,
GroupsService
groupsService
,
AccountsService
accountsService
,
@Value
(
"${maxkey.job.cron.schedule}"
)
String
cronSchedule
)
throws
SchedulerException
{
_logger
.
debug
(
"cron schedule : "
+
cronSchedule
);
Scheduler
scheduler
=
schedulerFactoryBean
.
getScheduler
();
JobDataMap
jobDataMap
=
new
JobDataMap
();
jobDataMap
.
put
(
"service"
,
groupsService
);
add
DynamicGroupsJob
(
DynamicGroupsJob
.
class
,
scheduler
,
groupsService
,
cronSchedule
,
"DynamicGroups"
);
add
JobScheduler
(
DynamicGroupsJob
.
class
,
schedulerFactoryBean
,
jobDataMap
,
cronSchedule
,
"DynamicGroups"
);
addAccountsStrategyJob
(
AccountsStrategyJob
.
class
,
scheduler
,
accountsService
,
cronSchedule
,
"AccountsStrategy"
);
return
"schedulerDynamicGroupsJobs"
;
}
@Bean
(
name
=
"schedulerAccountsStrategyJobs"
)
public
String
accountsStrategyJobs
(
SchedulerFactoryBean
schedulerFactoryBean
,
AccountsService
accountsService
,
@Value
(
"${maxkey.job.cron.schedule}"
)
String
cronSchedule
)
throws
SchedulerException
{
JobDataMap
jobDataMap
=
new
JobDataMap
();
jobDataMap
.
put
(
"service"
,
accountsService
);
addJobScheduler
(
AccountsStrategyJob
.
class
,
schedulerFactoryBean
,
jobDataMap
,
cronSchedule
,
"AccountsStrategy"
);
return
"schedulerJobs"
;
return
"scheduler
AccountsStrategy
Jobs"
;
}
private
void
addDynamicGroupsJob
(
Class
<?
extends
Job
>
jobClass
,
Scheduler
scheduler
,
GroupsService
groupsService
,
private
void
addJobScheduler
(
Class
<?
extends
Job
>
jobClass
,
SchedulerFactoryBean
schedulerFactoryBean
,
JobDataMap
jobDataMap
,
String
cronSchedule
,
String
identity
)
throws
SchedulerException
{
_logger
.
debug
(
"Cron {} , Job schedule {} "
,
cronSchedule
,
identity
);
Scheduler
scheduler
=
schedulerFactoryBean
.
getScheduler
();
_logger
.
debug
(
"add DynamicGroups Job"
);
JobDetail
jobDetail
=
JobBuilder
.
newJob
(
jobClass
)
.
withIdentity
(
identity
+
"Job"
,
identity
+
"Group"
)
.
build
();
JobDataMap
jobDataMap
=
new
JobDataMap
();
jobDataMap
.
put
(
"service"
,
groupsService
);
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronSchedule
);
CronTrigger
cronTrigger
=
...
...
@@ -108,41 +127,6 @@ public class MaxKeyMgtJobs implements InitializingBean {
scheduler
.
scheduleJob
(
jobDetail
,
cronTrigger
);
}
private
void
addAccountsStrategyJob
(
Class
<?
extends
Job
>
jobClass
,
Scheduler
scheduler
,
AccountsService
accountsService
,
String
cronSchedule
,
String
identity
)
throws
SchedulerException
{
_logger
.
debug
(
"add Accounts Strategy Job"
);
JobDetail
jobDetail
=
JobBuilder
.
newJob
(
jobClass
)
.
withIdentity
(
identity
+
"Job"
,
identity
+
"Group"
)
.
build
();
JobDataMap
jobDataMap
=
new
JobDataMap
();
jobDataMap
.
put
(
"service"
,
accountsService
);
CronScheduleBuilder
scheduleBuilder
=
CronScheduleBuilder
.
cronSchedule
(
cronSchedule
);
CronTrigger
cronTrigger
=
TriggerBuilder
.
newTrigger
()
.
withIdentity
(
"trigger"
+
identity
,
identity
+
"TriggerGroup"
)
.
usingJobData
(
jobDataMap
)
.
withSchedule
(
scheduleBuilder
)
.
build
();
scheduler
.
scheduleJob
(
jobDetail
,
cronTrigger
);
}
public
String
SessionListenerJob
(
SchedulerFactoryBean
schedulerFactoryBean
,
LoginRepository
loginRepository
,
LoginHistoryRepository
loginHistoryRepository
)
{
return
"sessionListenerJob"
;
}
@Override
public
void
afterPropertiesSet
()
throws
Exception
{
...
...
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/MaxKeyMgtMvcConfig.java
浏览文件 @
b9c7210d
...
...
@@ -36,7 +36,6 @@ import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
org.springframework.web.servlet.i18n.LocaleChangeInterceptor
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
@Configuration
...
...
@@ -59,9 +58,6 @@ public class MaxKeyMgtMvcConfig implements WebMvcConfigurer {
@Autowired
HistoryLogsAdapter
historyLogsAdapter
;
@Autowired
LocaleChangeInterceptor
localeChangeInterceptor
;
@Autowired
RestApiPermissionAdapter
restApiPermissionAdapter
;
...
...
@@ -142,10 +138,6 @@ public class MaxKeyMgtMvcConfig implements WebMvcConfigurer {
;
_logger
.
debug
(
"add HistoryLogsAdapter"
);
registry
.
addInterceptor
(
localeChangeInterceptor
);
_logger
.
debug
(
"add LocaleChangeInterceptor"
);
/*
* api
* idm
...
...
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/AbstractScheduleJob.java
0 → 100644
浏览文件 @
b9c7210d
package
org.maxkey.jobs
;
import
org.quartz.JobExecutionContext
;
public
class
AbstractScheduleJob
{
public
final
static
class
JOBSTATUS
{
public
static
int
STOP
=
0
;
public
static
int
RUNNING
=
1
;
public
static
int
ERROR
=
2
;
public
static
int
FINISHED
=
3
;
}
protected
int
jobStatus
=
JOBSTATUS
.
STOP
;
void
init
(
JobExecutionContext
context
){};
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/AccountsStrategyJob.java
浏览文件 @
b9c7210d
...
...
@@ -24,7 +24,7 @@ import org.quartz.JobExecutionContext;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
AccountsStrategyJob
implements
Job
,
Serializable
{
public
class
AccountsStrategyJob
extends
AbstractScheduleJob
implements
Job
,
Serializable
{
/**
*
...
...
@@ -35,40 +35,33 @@ public class AccountsStrategyJob implements Job , Serializable {
private
static
AccountsService
accountsService
=
null
;
public
static
class
JOBSTATUS
{
public
static
int
STOP
=
0
;
public
static
int
RUNNING
=
1
;
public
static
int
FINISHED
=
2
;
}
private
static
int
jobStatus
=
JOBSTATUS
.
STOP
;
@Override
public
void
execute
(
JobExecutionContext
context
){
if
(
jobStatus
==
JOBSTATUS
.
RUNNING
)
{
_logger
.
info
(
"Accounts Strategy job is in running . "
);
return
;
}
if
(
jobStatus
==
JOBSTATUS
.
RUNNING
)
{
return
;}
_logger
.
debug
(
"Accounts Strategy job is running ... "
);
init
(
context
);
_logger
.
debug
(
"Accounts Strategy Job running ... "
);
jobStatus
=
JOBSTATUS
.
RUNNING
;
try
{
if
(
accountsService
==
null
)
{
accountsService
=
(
AccountsService
)
context
.
getMergedJobDataMap
().
get
(
"service"
);
}
else
{
if
(
accountsService
!=
null
)
{
accountsService
.
refreshAllByStrategy
();
//10 minutes
Thread
.
sleep
(
10
*
1000
);
Thread
.
sleep
(
10
*
1000
);
//10 minutes
}
_logger
.
debug
(
"Accounts Strategy job is success "
);
_logger
.
debug
(
"Accounts Strategy Job finished "
);
jobStatus
=
JOBSTATUS
.
FINISHED
;
}
catch
(
Exception
e
)
{
jobStatus
=
JOBSTATUS
.
ERROR
;
_logger
.
error
(
"Exception "
,
e
);
jobStatus
=
JOBSTATUS
.
STOP
;
}
jobStatus
=
JOBSTATUS
.
FINISHED
;
_logger
.
debug
(
"Accounts Strategy job is finished . "
);
}
@Override
void
init
(
JobExecutionContext
context
){
if
(
accountsService
==
null
)
{
accountsService
=
(
AccountsService
)
context
.
getMergedJobDataMap
().
get
(
"service"
);
}
}
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/DynamicGroupsJob.java
浏览文件 @
b9c7210d
...
...
@@ -24,7 +24,7 @@ import org.quartz.JobExecutionContext;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
DynamicGroupsJob
implements
Job
,
Serializable
{
public
class
DynamicGroupsJob
extends
AbstractScheduleJob
implements
Job
,
Serializable
{
/**
*
*/
...
...
@@ -33,40 +33,34 @@ public class DynamicGroupsJob implements Job , Serializable {
final
static
Logger
_logger
=
LoggerFactory
.
getLogger
(
DynamicGroupsJob
.
class
);
private
static
GroupsService
groupsService
=
null
;
public
static
class
JOBSTATUS
{
public
static
int
STOP
=
0
;
public
static
int
RUNNING
=
1
;
public
static
int
FINISHED
=
2
;
}
private
static
int
jobStatus
=
JOBSTATUS
.
STOP
;
@Override
public
void
execute
(
JobExecutionContext
context
){
if
(
jobStatus
==
JOBSTATUS
.
RUNNING
)
{
_logger
.
info
(
"DynamicGroupsJob is in running . "
);
return
;
}
if
(
jobStatus
==
JOBSTATUS
.
RUNNING
)
{
return
;}
_logger
.
debug
(
"DynamicGroupsJob is running ... "
);
init
(
context
);
_logger
.
debug
(
"DynamicGroups Job running ... "
);
jobStatus
=
JOBSTATUS
.
RUNNING
;
try
{
if
(
groupsService
==
null
)
{
groupsService
=
(
GroupsService
)
context
.
getMergedJobDataMap
().
get
(
"service"
);
}
else
{
if
(
groupsService
!=
null
)
{
groupsService
.
refreshAllDynamicGroups
();
Thread
.
sleep
(
10
*
1000
);
Thread
.
sleep
(
10
*
1000
);
//10 minutes
}
_logger
.
debug
(
"DynamicGroupsJob is success "
);
_logger
.
debug
(
"DynamicGroups Job finished "
);
jobStatus
=
JOBSTATUS
.
FINISHED
;
}
catch
(
Exception
e
)
{
jobStatus
=
JOBSTATUS
.
ERROR
;
_logger
.
error
(
"Exception "
,
e
);
jobStatus
=
JOBSTATUS
.
STOP
;
}
jobStatus
=
JOBSTATUS
.
FINISHED
;
_logger
.
debug
(
"DynamicGroupsJob is finished . "
);
}
@Override
void
init
(
JobExecutionContext
context
){
if
(
groupsService
==
null
)
{
groupsService
=
(
GroupsService
)
context
.
getMergedJobDataMap
().
get
(
"service"
);
}
}
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/DynamicRolesJob.java
浏览文件 @
b9c7210d
...
...
@@ -17,6 +17,6 @@
package
org.maxkey.jobs
;
public
class
DynamicRolesJob
{
public
class
DynamicRolesJob
extends
AbstractScheduleJob
{
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/jobs/OnlineTicketListenerJob.java
浏览文件 @
b9c7210d
...
...
@@ -17,21 +17,53 @@ package org.maxkey.jobs;
import
java.io.Serializable
;
import
org.maxkey.authn.online.OnlineTicketService
;
import
org.maxkey.entity.HistoryLogin
;
import
org.quartz.Job
;
import
org.quartz.JobExecutionContext
;
import
org.quartz.JobExecutionException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
public
class
OnlineTicketListenerJob
implements
Job
,
Serializable
{
public
class
OnlineTicketListenerJob
extends
AbstractScheduleJob
implements
Job
,
Serializable
{
final
static
Logger
_logger
=
LoggerFactory
.
getLogger
(
OnlineTicketListenerJob
.
class
);
private
static
final
long
serialVersionUID
=
4782358765969474833L
;
OnlineTicketService
onlineTicketService
;
@Override
public
void
execute
(
JobExecutionContext
context
)
throws
JobExecutionException
{
// TODO Auto-generated method stub
if
(
jobStatus
==
JOBSTATUS
.
RUNNING
)
{
return
;}
init
(
context
);
_logger
.
debug
(
"OnlineTicketListener Job is running ... "
);
jobStatus
=
JOBSTATUS
.
RUNNING
;
try
{
if
(
onlineTicketService
!=
null
)
{
for
(
HistoryLogin
onlineTicket
:
onlineTicketService
.
queryOnlineTicket
())
{
if
(
onlineTicketService
.
get
(
onlineTicket
.
getSessionId
())
==
null
)
{
onlineTicketService
.
terminate
(
onlineTicket
.
getSessionId
(),
onlineTicket
.
getUserId
(),
onlineTicket
.
getUsername
());
}
}
}
_logger
.
debug
(
"OnlineTicketListener Job finished "
);
jobStatus
=
JOBSTATUS
.
FINISHED
;
}
catch
(
Exception
e
)
{
jobStatus
=
JOBSTATUS
.
ERROR
;
_logger
.
error
(
"Exception "
,
e
);
}
}
@Override
void
init
(
JobExecutionContext
context
){
if
(
onlineTicketService
==
null
)
{
onlineTicketService
=
(
OnlineTicketService
)
context
.
getMergedJobDataMap
().
get
(
"service"
);
}
}
}
maxkey-webs/maxkey-web-mgt/src/main/java/org/maxkey/web/access/contorller/LoginSessionController.java
浏览文件 @
b9c7210d
...
...
@@ -25,8 +25,6 @@ import org.maxkey.authn.online.OnlineTicketService;
import
org.maxkey.entity.HistoryLogin
;
import
org.maxkey.entity.Message
;
import
org.maxkey.entity.UserInfo
;
import
org.maxkey.persistence.repository.LoginHistoryRepository
;
import
org.maxkey.persistence.repository.LoginRepository
;
import
org.maxkey.persistence.service.HistoryLoginService
;
import
org.maxkey.util.DateUtils
;
import
org.maxkey.util.StringUtils
;
...
...
@@ -57,11 +55,6 @@ public class LoginSessionController {
@Autowired
HistoryLoginService
historyLoginService
;
@Autowired
LoginRepository
loginRepository
;
@Autowired
LoginHistoryRepository
loginHistoryRepository
;
@Autowired
OnlineTicketService
onlineTicketService
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录