feat: add admin at onCreate

This commit is contained in:
CaiHQ
2022-05-03 00:04:26 +08:00
parent 3ab45488df
commit 1957d163b5
16 changed files with 504 additions and 69 deletions

View File

@@ -0,0 +1,105 @@
package org.bdware.sc.registry;
import com.google.gson.JsonObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.bdware.sc.util.ExceptionUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class DBConnector {
private static final Logger LOGGER = LogManager.getLogger(DBConnector.class);
public static Connection jdbcConnection;
public static String url;
public static String userName;
public static String password;
public static void init() throws SQLException {
try {
JsonObject ret = new JsonObject();
ret.addProperty("success", "yes");
System.out.println(ret.get("success"));
Class.forName("org.postgresql.Driver");
connClose(jdbcConnection);
} catch (Exception e) {
LOGGER.error(e.getMessage());
LOGGER.debug(ExceptionUtil.exceptionToString(e));
}
jdbcConnection = DriverManager.getConnection(url, userName, password);
}
public static void connect() throws SQLException {
if (url == null) init();
if (jdbcConnection == null || jdbcConnection.isClosed())
jdbcConnection = DriverManager.getConnection(url, userName, password);
}
private static void connClose(Connection conn) {
if (conn == null) return;
try {
if (conn != null && !conn.isClosed()) conn.close();
} catch (Exception e) {
LOGGER.error(e.getMessage());
LOGGER.debug(ExceptionUtil.exceptionToString(e));
}
}
private static void pstmtClose(PreparedStatement pstmt) {
if (pstmt == null) return;
try {
if (pstmt != null && !pstmt.isClosed()) pstmt.close();
} catch (Exception e) {
LOGGER.error(e.getMessage());
LOGGER.debug(ExceptionUtil.exceptionToString(e));
}
}
public static void insert(String schema, String table, Map<String, Object> items) {
// if (!items.containsKey("time") || items.get("time").equals("0")) return; // If time is null, do nothing.
// prepare columns and values needed in sql
StringBuilder columns = new StringBuilder();
StringBuilder values = new StringBuilder();
List<Map.Entry<String, Object>> list = new ArrayList<>(items.entrySet());
list.forEach(item -> {
columns.append("\"").append(item.getKey()).append("\",");
values.append("?,");
});
columns.deleteCharAt(columns.lastIndexOf(","));
values.deleteCharAt(values.lastIndexOf(","));
// generate sql
// example:
// INSERT INTO "public"."doip_request" ("op","server_doid","status_code","client_doid","do_prefix",
// "response_hash","server_pubkey","do_data_id","do_repo","request_hash","client_pubkey","server_ip",
// "client_ip","time","record_hash") VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
String sql = "INSERT INTO \"" + schema + "\".\"" + table + "\" (" + columns + ") VALUES (" + values + ")";
// execute sql
PreparedStatement pstmt = null;
try {
connect();
pstmt = jdbcConnection.prepareStatement(sql);
int i = 1;
for (Map.Entry<String, Object> item : list) {
pstmt.setObject(i, item.getValue());
i++;
}
System.out.println(pstmt);
pstmt.executeUpdate();
} catch (SQLException e) {
LOGGER.error(e.getMessage());
LOGGER.debug(ExceptionUtil.exceptionToString(e));
}
pstmtClose(pstmt);
connClose(jdbcConnection);
}
}

View File

@@ -1,4 +1,4 @@
package org.bdware.sc.contractexample;
package org.bdware.sc.registry;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

View File

@@ -0,0 +1,32 @@
package org.bdware.sc.registry;
import com.google.gson.JsonObject;
import org.bdware.sc.engine.JSONTool;
import wrp.jdk.nashorn.api.scripting.ScriptObjectMirror;
import java.util.HashMap;
import java.util.Map;
public class RegistryDB {
public static void init(ScriptObjectMirror arg, String requester) {
try {
JsonObject jsonData = JSONTool.convertMirrorToJson(arg).getAsJsonObject();
DBConnector.url = jsonData.get("DBUrl").getAsString();
DBConnector.password = jsonData.get("password").getAsString();
DBConnector.userName = jsonData.get("username").getAsString();
DBConnector.init();
DBConnector.connect();
Map<String, Object> item = new HashMap<>();
item.put("pubkey", requester);
item.put("type", "admin");
item.put("username", jsonData.get("adminName").getAsString());
DBConnector.insert("registry", "user", item);
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

@@ -1,15 +0,0 @@
filter.threshold.type=ThresholdFilter
filter.threshold.level=debug
appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%highlight{[%-5p] %d{HH:mm:ss.SSS} %m (%F:%L)[%M]%n}{FATAL=Bright Red,ERROR=Red,WARN=Yellow,INFO=Green,DEBUG=Blue,TRACE=White}
appender.rolling.type=File
appender.rolling.name=log
appender.rolling.append=true
appender.rolling.fileName=./log/gateway.log
appender.rolling.layout.type=PatternLayout
appender.rolling.layout.pattern=%d-%m%n
rootLogger.level=info
rootLogger.appenderRef.stdout.ref=STDOUT
rootLogger.appenderRef.log.ref=log

View File

@@ -0,0 +1,7 @@
import org.bdware.sc.debugger.DebugMain;
public class StartRegistry {
public static void main(String[] args){
DebugMain.main(args);
}
}

View File

@@ -1,15 +0,0 @@
filter.threshold.type=ThresholdFilter
filter.threshold.level=debug
appender.console.type=Console
appender.console.name=STDOUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%highlight{[%-5p] %d{HH:mm:ss.SSS} %m (%F:%L)[%M]%n}{FATAL=Bright Red,ERROR=Red,WARN=Yellow,INFO=Green,DEBUG=Blue,TRACE=White}
appender.rolling.type=File
appender.rolling.name=log
appender.rolling.append=true
appender.rolling.fileName=./log/gateway.log
appender.rolling.layout.type=PatternLayout
appender.rolling.layout.pattern=%d-%m%n
rootLogger.level=info
rootLogger.appenderRef.stdout.ref=STDOUT
rootLogger.appenderRef.log.ref=log