Commit 8ddf6c42 authored by Liyuan Li's avatar Liyuan Li

Merge remote-tracking branch 'origin/dev' into dev

parents 2e64fbfb dfe23794
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
Description: Solo POM. Description: Solo POM.
Version: 3.18.3.85, Feb 21, 2020 Version: 3.18.3.87, Mar 13, 2020
Author: <a href="http://88250.b3log.org">Liang Ding</a> Author: <a href="http://88250.b3log.org">Liang Ding</a>
Author: <a href="http://www.annpeter.cn">Ann Peter</a> Author: <a href="http://www.annpeter.cn">Ann Peter</a>
Author: <a href="http://vanessa.b3log.org">Vanessa</a> Author: <a href="http://vanessa.b3log.org">Vanessa</a>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
</scm> </scm>
<properties> <properties>
<org.b3log.latke.version>3.2.10</org.b3log.latke.version> <org.b3log.latke.version>3.2.14</org.b3log.latke.version>
<jsoup.version>1.12.1</jsoup.version> <jsoup.version>1.12.1</jsoup.version>
<flexmark.version>0.50.40</flexmark.version> <flexmark.version>0.50.40</flexmark.version>
......
...@@ -47,7 +47,7 @@ import org.json.JSONObject; ...@@ -47,7 +47,7 @@ import org.json.JSONObject;
* Server. * Server.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 3.0.0.1, Feb 21, 2020 * @version 3.0.1.0, Mar 14, 2020
* @since 1.2.0 * @since 1.2.0
*/ */
public final class Server extends BaseServer { public final class Server extends BaseServer {
...@@ -71,40 +71,34 @@ public final class Server extends BaseServer { ...@@ -71,40 +71,34 @@ public final class Server extends BaseServer {
Stopwatchs.start("Booting"); Stopwatchs.start("Booting");
final Options options = new Options(); final Options options = new Options();
final Option listenPortOpt = Option.builder("lp").longOpt("listen_port").argName("LISTEN_PORT"). final Option listenPortOpt = Option.builder().longOpt("listen_port").argName("LISTEN_PORT").hasArg().desc("listen port, default is 8080").build();
hasArg().desc("listen port, default is 8080").build();
options.addOption(listenPortOpt); options.addOption(listenPortOpt);
final Option serverSchemeOpt = Option.builder("ss").longOpt("server_scheme").argName("SERVER_SCHEME"). final Option serverSchemeOpt = Option.builder().longOpt("server_scheme").argName("SERVER_SCHEME").hasArg().desc("browser visit protocol, default is http").build();
hasArg().desc("browser visit protocol, default is http").build();
options.addOption(serverSchemeOpt); options.addOption(serverSchemeOpt);
final Option serverHostOpt = Option.builder("sh").longOpt("server_host").argName("SERVER_HOST"). final Option serverHostOpt = Option.builder().longOpt("server_host").argName("SERVER_HOST").hasArg().desc("browser visit domain name, default is localhost").build();
hasArg().desc("browser visit domain name, default is localhost").build();
options.addOption(serverHostOpt); options.addOption(serverHostOpt);
final Option serverPortOpt = Option.builder("sp").longOpt("server_port").argName("SERVER_PORT"). final Option serverPortOpt = Option.builder().longOpt("server_port").argName("SERVER_PORT").hasArg().desc("browser visit port, default is 8080").build();
hasArg().desc("browser visit port, default is 8080").build();
options.addOption(serverPortOpt); options.addOption(serverPortOpt);
final Option staticServerSchemeOpt = Option.builder("sss").longOpt("static_server_scheme").argName("STATIC_SERVER_SCHEME"). final Option staticServerSchemeOpt = Option.builder().longOpt("static_server_scheme").argName("STATIC_SERVER_SCHEME").hasArg().desc("browser visit static resource protocol, default is http").build();
hasArg().desc("browser visit static resource protocol, default is http").build();
options.addOption(staticServerSchemeOpt); options.addOption(staticServerSchemeOpt);
final Option staticServerHostOpt = Option.builder("ssh").longOpt("static_server_host").argName("STATIC_SERVER_HOST"). final Option staticServerHostOpt = Option.builder().longOpt("static_server_host").argName("STATIC_SERVER_HOST").hasArg().desc("browser visit static resource domain name, default is localhost").build();
hasArg().desc("browser visit static resource domain name, default is localhost").build();
options.addOption(staticServerHostOpt); options.addOption(staticServerHostOpt);
final Option staticServerPortOpt = Option.builder("ssp").longOpt("static_server_port").argName("STATIC_SERVER_PORT"). final Option staticServerPortOpt = Option.builder().longOpt("static_server_port").argName("STATIC_SERVER_PORT").hasArg().desc("browser visit static resource port, default is 8080").build();
hasArg().desc("browser visit static resource port, default is 8080").build();
options.addOption(staticServerPortOpt); options.addOption(staticServerPortOpt);
final Option runtimeModeOpt = Option.builder("rm").longOpt("runtime_mode").argName("RUNTIME_MODE"). final Option staticPathOpt = Option.builder().longOpt("static_path").argName("STATIC_PATH").hasArg().desc("browser visit static resource path, default is empty").build();
hasArg().desc("runtime mode (DEVELOPMENT/PRODUCTION), default is DEVELOPMENT").build(); options.addOption(staticPathOpt);
final Option runtimeModeOpt = Option.builder().longOpt("runtime_mode").argName("RUNTIME_MODE").hasArg().desc("runtime mode (DEVELOPMENT/PRODUCTION), default is DEVELOPMENT").build();
options.addOption(runtimeModeOpt); options.addOption(runtimeModeOpt);
final Option luteHttpOpt = Option.builder("lute").longOpt("lute_http").argName("LUTE_HTTP"). final Option luteHttpOpt = Option.builder().longOpt("lute_http").argName("LUTE_HTTP").hasArg().desc("lute http URL, default is http://localhost:8249, see https://github.com/88250/lute-http for more details").build();
hasArg().desc("lute http URL, default is http://localhost:8249, see https://github.com/88250/lute-http for more details").build();
options.addOption(luteHttpOpt); options.addOption(luteHttpOpt);
options.addOption("h", "help", false, "print help for the command"); options.addOption("h", "help", false, "print help for the command");
...@@ -171,6 +165,10 @@ public final class Server extends BaseServer { ...@@ -171,6 +165,10 @@ public final class Server extends BaseServer {
if (null != staticServerPort) { if (null != staticServerPort) {
Latkes.setLatkeProperty("staticServerPort", staticServerPort); Latkes.setLatkeProperty("staticServerPort", staticServerPort);
} }
String staticPath = commandLine.getOptionValue("static_path");
if (null != staticPath) {
Latkes.setLatkeProperty("staticPath", staticPath);
}
String runtimeMode = commandLine.getOptionValue("runtime_mode"); String runtimeMode = commandLine.getOptionValue("runtime_mode");
if (null != runtimeMode) { if (null != runtimeMode) {
Latkes.setRuntimeMode(Latkes.RuntimeMode.valueOf(runtimeMode)); Latkes.setRuntimeMode(Latkes.RuntimeMode.valueOf(runtimeMode));
...@@ -395,8 +393,8 @@ public final class Server extends BaseServer { ...@@ -395,8 +393,8 @@ public final class Server extends BaseServer {
final B3Receiver b3Receiver = beanManager.getReference(B3Receiver.class); final B3Receiver b3Receiver = beanManager.getReference(B3Receiver.class);
final Dispatcher.RouterGroup b3Group = Dispatcher.group(); final Dispatcher.RouterGroup b3Group = Dispatcher.group();
b3Group.router().post().put().uri("/apis/symphony/article").handler(b3Receiver::postArticle). b3Group.router().post().put().uri("/apis/symphony/article").handler(b3Receiver::postArticle);
put("/apis/symphony/comment", b3Receiver::addComment); b3Group.put("/apis/symphony/comment", b3Receiver::addComment);
final BlogProcessor blogProcessor = beanManager.getReference(BlogProcessor.class); final BlogProcessor blogProcessor = beanManager.getReference(BlogProcessor.class);
final Dispatcher.RouterGroup blogGroup = Dispatcher.group(); final Dispatcher.RouterGroup blogGroup = Dispatcher.group();
......
...@@ -41,7 +41,7 @@ import org.b3log.solo.util.Solos; ...@@ -41,7 +41,7 @@ import org.b3log.solo.util.Solos;
import org.json.JSONObject; import org.json.JSONObject;
/** /**
* This listener is responsible for sending article to B3log Rhythm. Sees <a href="https://hacpai.com/b3log">B3log 构思</a> for more details. * This listener is responsible for sending article to B3log Rhythm. Sees <a href="https://hacpai.com/article/1546941897596">B3log 构思 - 分布式社区网络</a> for more details.
* <p> * <p>
* API spec: https://hacpai.com/article/1457158841475 * API spec: https://hacpai.com/article/1457158841475
* </p> * </p>
......
...@@ -26,7 +26,7 @@ import org.b3log.latke.ioc.Singleton; ...@@ -26,7 +26,7 @@ import org.b3log.latke.ioc.Singleton;
import org.json.JSONObject; import org.json.JSONObject;
/** /**
* This listener is responsible for updating article to B3log Rhythm. Sees <a href="https://hacpai.com/b3log">B3log 构思</a> for more details. * This listener is responsible for updating article to B3log Rhythm. Sees <a href="https://hacpai.com/article/1546941897596">B3log 构思 - 分布式社区网络</a> for more details.
* <p> * <p>
* API spec: https://hacpai.com/article/1457158841475 * API spec: https://hacpai.com/article/1457158841475
* </p> * </p>
......
...@@ -40,7 +40,7 @@ import org.b3log.solo.util.Solos; ...@@ -40,7 +40,7 @@ import org.b3log.solo.util.Solos;
import org.json.JSONObject; import org.json.JSONObject;
/** /**
* This listener is responsible for sending comment to B3log Rhythm. Sees <a href="https://hacpai.com/b3log">B3log 构思</a> for more details. * This listener is responsible for sending comment to B3log Rhythm. Sees <a href="https://hacpai.com/article/1546941897596">B3log 构思 - 分布式社区网络</a> for more details.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.1.7, Jan 1, 2020 * @version 1.0.1.7, Jan 1, 2020
......
...@@ -43,10 +43,10 @@ import org.json.JSONObject; ...@@ -43,10 +43,10 @@ import org.json.JSONObject;
import java.util.Date; import java.util.Date;
/** /**
* Receiving articles and comments from B3log community. Visits <a href="https://hacpai.com/b3log">B3log 构思</a> for more details. * Receiving articles and comments from B3log community. Visits <a href="https://hacpai.com/article/1546941897596">B3log 构思 - 分布式社区网络</a> for more details.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 3.0.0.0, Feb 9, 2020 * @version 3.0.0.1, Mar 14, 2020
* @since 0.5.5 * @since 0.5.5
*/ */
@Singleton @Singleton
...@@ -147,6 +147,16 @@ public class B3Receiver { ...@@ -147,6 +147,16 @@ public class B3Receiver {
try { try {
final JSONObject client = requestJSONObject.optJSONObject("client"); final JSONObject client = requestJSONObject.optJSONObject("client");
if (null == client) {
ret.put(Keys.CODE, 1);
final String msg = "Not found client";
ret.put(Keys.MSG, msg);
LOGGER.log(Level.WARN, msg);
return;
}
final String articleAuthorName = client.optString(User.USER_NAME); final String articleAuthorName = client.optString(User.USER_NAME);
final JSONObject articleAuthor = userRepository.getByUserName(articleAuthorName); final JSONObject articleAuthor = userRepository.getByUserName(articleAuthorName);
if (null == articleAuthor) { if (null == articleAuthor) {
...@@ -170,6 +180,15 @@ public class B3Receiver { ...@@ -170,6 +180,15 @@ public class B3Receiver {
} }
final JSONObject symArticle = requestJSONObject.optJSONObject(Article.ARTICLE); final JSONObject symArticle = requestJSONObject.optJSONObject(Article.ARTICLE);
if (null == symArticle) {
ret.put(Keys.CODE, 1);
final String msg = "Not found article";
ret.put(Keys.MSG, msg);
LOGGER.log(Level.WARN, msg);
return;
}
final String title = symArticle.optString("title"); final String title = symArticle.optString("title");
final String articleId = symArticle.optString("id"); final String articleId = symArticle.optString("id");
final JSONObject oldArticle = articleQueryService.getArticleById(articleId); final JSONObject oldArticle = articleQueryService.getArticleById(articleId);
...@@ -256,7 +275,25 @@ public class B3Receiver { ...@@ -256,7 +275,25 @@ public class B3Receiver {
try { try {
final JSONObject symCmt = requestJSONObject.optJSONObject(Comment.COMMENT); final JSONObject symCmt = requestJSONObject.optJSONObject(Comment.COMMENT);
if (null == symCmt) {
ret.put(Keys.CODE, 1);
final String msg = "Not found comment";
ret.put(Keys.MSG, msg);
LOGGER.log(Level.WARN, msg);
return;
}
final JSONObject symClient = requestJSONObject.optJSONObject("client"); final JSONObject symClient = requestJSONObject.optJSONObject("client");
if (null == symClient) {
ret.put(Keys.CODE, 1);
final String msg = "Not found client";
ret.put(Keys.MSG, msg);
LOGGER.log(Level.WARN, msg);
return;
}
final String articleAuthorName = symClient.optString(User.USER_NAME); final String articleAuthorName = symClient.optString(User.USER_NAME);
final JSONObject articleAuthor = userRepository.getByUserName(articleAuthorName); final JSONObject articleAuthor = userRepository.getByUserName(articleAuthorName);
if (null == articleAuthor) { if (null == articleAuthor) {
......
...@@ -34,6 +34,7 @@ import org.b3log.latke.service.LangPropsService; ...@@ -34,6 +34,7 @@ import org.b3log.latke.service.LangPropsService;
import org.b3log.latke.service.ServiceException; import org.b3log.latke.service.ServiceException;
import org.b3log.latke.service.annotation.Service; import org.b3log.latke.service.annotation.Service;
import org.b3log.latke.util.Strings; import org.b3log.latke.util.Strings;
import org.b3log.solo.Server;
import org.b3log.solo.model.Common; import org.b3log.solo.model.Common;
import org.b3log.solo.model.Option; import org.b3log.solo.model.Option;
import org.b3log.solo.model.UserExt; import org.b3log.solo.model.UserExt;
...@@ -47,7 +48,7 @@ import org.json.JSONObject; ...@@ -47,7 +48,7 @@ import org.json.JSONObject;
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @author <a href="https://hacpai.com/member/DASHU">DASHU</a> * @author <a href="https://hacpai.com/member/DASHU">DASHU</a>
* @author <a href="https://hacpai.com/member/nanolikeyou">nanolikeyou</a> * @author <a href="https://hacpai.com/member/nanolikeyou">nanolikeyou</a>
* @version 1.1.0.19, Jun 6, 2019 * @version 1.1.0.20, Mar 17, 2020
* @since 0.4.0 * @since 0.4.0
*/ */
@Service @Service
...@@ -113,6 +114,15 @@ public class UserMgmtService { ...@@ -113,6 +114,15 @@ public class UserMgmtService {
final JSONObject requestJSON = new JSONObject(). final JSONObject requestJSON = new JSONObject().
put(User.USER_NAME, admin.optString(User.USER_NAME)). put(User.USER_NAME, admin.optString(User.USER_NAME)).
put(UserExt.USER_B3_KEY, admin.optString(UserExt.USER_B3_KEY)); put(UserExt.USER_B3_KEY, admin.optString(UserExt.USER_B3_KEY));
final JSONObject preference = optionQueryService.getPreference();
final JSONObject client = new JSONObject().
put("clientTitle", preference.getString(Option.ID_C_BLOG_TITLE)).
put("clientHost", Latkes.getServePath()).
put("clientName", "Solo").
put("clientVersion", Server.VERSION).
put("userName", admin.optString(User.USER_NAME)).
put("userB3Key", admin.optString(UserExt.USER_B3_KEY));
requestJSON.put("client", client);
final HttpResponse res = HttpRequest.post("https://hacpai.com/user/usite").trustAllCerts(true). final HttpResponse res = HttpRequest.post("https://hacpai.com/user/usite").trustAllCerts(true).
connectionTimeout(3000).timeout(7000).header("User-Agent", Solos.USER_AGENT). connectionTimeout(3000).timeout(7000).header("User-Agent", Solos.USER_AGENT).
body(requestJSON.toString()).send(); body(requestJSON.toString()).send();
......
...@@ -31,7 +31,7 @@ import org.json.JSONObject; ...@@ -31,7 +31,7 @@ import org.json.JSONObject;
* GitHub utilities. * GitHub utilities.
* *
* @author <a href="http://88250.b3log.org">Liang Ding</a> * @author <a href="http://88250.b3log.org">Liang Ding</a>
* @version 1.0.0.1, Dec 14, 2019 * @version 1.0.0.2, Mar 17, 2020
* @since 3.0.0 * @since 3.0.0
*/ */
public final class GitHubs { public final class GitHubs {
...@@ -60,9 +60,8 @@ public final class GitHubs { ...@@ -60,9 +60,8 @@ public final class GitHubs {
return null; return null;
} }
final JSONObject data = result.optJSONObject(Common.DATA); final JSONObject data = result.optJSONObject(Common.DATA);
final JSONArray ret = data.optJSONArray("githubrepos");
return ret; return data.optJSONArray("githubrepos");
} catch (final Exception e) { } catch (final Exception e) {
LOGGER.log(Level.ERROR, "Gets GitHub repos failed", e); LOGGER.log(Level.ERROR, "Gets GitHub repos failed", e);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment