v3.0.3 Login Processor Update 1

prototype
Yan 7 months ago
parent bdf0ce7e0b
commit b580a25efd

5
.gitignore vendored

@ -1,4 +1,7 @@
/target/
/.classpath
/.project
/.settings
/.settings
/conf/
/conf2/
/bruno/

@ -1,9 +0,0 @@
{
"version": "1",
"name": "camel-springboot-xml-example",
"type": "collection",
"ignore": [
"node_modules",
".git"
]
}

@ -1,8 +0,0 @@
auth {
mode: basic
}
auth:basic {
username:
password:
}

@ -1,20 +0,0 @@
meta {
name: findSession
type: http
seq: 4
}
get {
url: http://localhost:8761/services/api/session/a3518555-5a96-42a6-a5ec-958c4963a65e
body: none
auth: basic
}
headers {
operationName: findUsers
}
auth:basic {
username: cxfrs
password: password
}

@ -1,20 +0,0 @@
meta {
name: findSessions
type: http
seq: 2
}
get {
url: http://localhost:8761/services/api/session
body: none
auth: basic
}
headers {
operationName: findUsers
}
auth:basic {
username: cxfrs
password: password
}

@ -1,20 +0,0 @@
meta {
name: login
type: http
seq: 5
}
post {
url: http://localhost:8761/services/api/login/a3518555-5a96-42a6-a5ec-958c4963a65e
body: none
auth: basic
}
headers {
operationName: findUsers
}
auth:basic {
username: cxfrs
password: password
}

@ -1,33 +0,0 @@
meta {
name: updateSession
type: http
seq: 3
}
post {
url: http://localhost:8761/services/api/session
body: json
auth: basic
}
headers {
Content-Type: application/json
X-MethodName: updateUser
}
auth:basic {
username: cxfrs
password: password
}
body:json {
{
"sessionId": "{{uuid}}",
"username": "admin1",
"password": "password1"
}
}
script:pre-request {
bru.setVar('uuid', require("uuid").v4());
}

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/server.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/server.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>3</maxHistory>
<totalSizeCap>300MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example.sbcamel" level="DEBUG" />
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>

@ -1,37 +0,0 @@
server:
port: 8761
camel:
springboot:
main-run-controller: true
spring:
application:
name: eureka-server
activemq:
broker-url: "tcp://localhost:61616"
ldap:
urls: ldap://localhost:10389
base: dc=example,dc=com
username: uid=admin,ou=system
password: secret
app:
queue-name: "SessionServiceQueue"
database:
url: "jdbc:h2:tcp://localhost/~/h2/db/appdb"
username: "app"
password: "app"
mapper-package: "com.example.sbcamel.mapper"
htmlunit:
login-url: ""
login-btn-selector: ""
home-page-selector: ""
logout-btn-selector: ""
eureka:
client:
service-url:
defaultZone: http://cxfrs:password@localhost:8761/eureka/,http://cxfrs:password@localhost:8762/eureka/
register-with-eureka: false
fetch-registry: false

@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<appender name="STDOUT"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/server.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/server.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>3</maxHistory>
<totalSizeCap>300MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example.sbcamel" level="DEBUG" />
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>

@ -1,37 +0,0 @@
server:
port: 8762
camel:
springboot:
main-run-controller: true
spring:
application:
name: eureka-server
activemq:
broker-url: "tcp://localhost:61616"
ldap:
urls: ldap://localhost:10389
base: dc=example,dc=com
username: uid=admin,ou=system
password: secret
app:
queue-name: "SessionServiceQueue"
database:
url: "jdbc:h2:tcp://localhost/~/h2/db/appdb"
username: "app"
password: "app"
mapper-package: "com.example.sbcamel.mapper"
htmlunit:
login-url: ""
login-btn-selector: ""
home-page-selector: ""
logout-btn-selector: ""
eureka:
client:
service-url:
defaultZone: http://cxfrs:password@localhost:8761/eureka/,http://cxfrs:password@localhost:8762/eureka/
register-with-eureka: false
fetch-registry: false

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>camel-springboot-activemq6-example</artifactId>
<version>3.0.2</version>
<version>3.0.3</version>
<name>camel-springboot-activemq6-example</name>
<properties>
@ -16,7 +16,6 @@
<spring-cloud-dependencies.version>2024.0.1</spring-cloud-dependencies.version>
<mybatis.version>3.5.19</mybatis.version>
<mybatis-spring.version>3.0.4</mybatis-spring.version>
<htmlunit.version>4.11.1</htmlunit.version>
<guava.version>33.1.0-jre</guava.version>
<maven-compiler-plugin.version>3.14.0</maven-compiler-plugin.version>
</properties>

@ -2,9 +2,7 @@ package com.example.sbcamel.processor;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.htmlunit.Page;
import org.htmlunit.WebClient;
import org.htmlunit.html.DomNode;
import org.htmlunit.html.HtmlButton;
import org.htmlunit.html.HtmlForm;
import org.htmlunit.html.HtmlPage;
@ -26,11 +24,14 @@ public class LoginProcessor implements Processor {
@Value("${app.htmlunit.login-btn-selector}")
private String loginBtnSelector;
@Value("${app.htmlunit.home-page-selector}")
private String homePageSelector;
@Value("${app.htmlunit.login-wait-millis:3000}")
private Long loginWaitMillis;
@Value("${app.htmlunit.logout-btn-selector}")
private String logoutBtnSelector;
@Value("${app.htmlunit.user-page-url}")
private String userPageUrl;
@Value("${app.htmlunit.logout-url}")
private String logoutUrl;
@Override
public void process(Exchange exchange) throws Exception {
@ -40,6 +41,8 @@ public class LoginProcessor implements Processor {
try (final WebClient webClient = new WebClient()) {
final HtmlPage loginPage = webClient.getPage(loginUrl);
logger.info("loginPage: {}", loginPage.asXml());
final HtmlForm form = loginPage.getForms().get(0);
final HtmlTextInput usernameField = form.getInputByName("username");
usernameField.type(session.getUsername());
@ -50,16 +53,15 @@ public class LoginProcessor implements Processor {
logger.info("entered password: {}", session.getPassword());
HtmlButton loginBtn = loginPage.querySelector(loginBtnSelector);
HtmlPage defaultPage = loginBtn.click();
logger.info("loginBtn clicked, defaultPage: {}", defaultPage);
logger.info("loginBtn type: {}", loginBtn.getType());
loginBtn.click();
HtmlButton homePageBtn = defaultPage.querySelector(homePageSelector);
HtmlPage homePage = homePageBtn.click();
logger.info("homePageBtn clicked, homePage: {}", homePage);
Thread.sleep(loginWaitMillis);
HtmlPage userPage = webClient.getPage(userPageUrl);
logger.info("loginBtn clicked, userPage: {}", userPage.asXml());
HtmlButton logoutBtn = homePage.querySelector(logoutBtnSelector);
HtmlPage loginPage2 = logoutBtn.click();
logger.info("logoutBtn clicked, loginPage2: {}", loginPage2);
HtmlPage logoutPage = webClient.getPage(logoutUrl);
logger.info("logoutPage: {}", logoutPage.asXml());
} catch (Exception e) {
logger.error("LoginProcessor process error!", e);

Loading…
Cancel
Save