Skip to content

Commit 07b5dd0

Browse files
committed
1.0
1 parent fc8ddd8 commit 07b5dd0

23 files changed

+350
-82
lines changed

src/main/java/io/github/techstreet/dfscript/commands/misc/ScriptsCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void register(CommandDispatcher<FabricClientCommandSource> cd) {
2222
cd.register(
2323
literal("scripts")
2424
.executes(ctx -> {
25-
DFScript.MC.send(() -> DFScript.MC.setScreen(new ScriptListScreen()));
25+
DFScript.MC.send(() -> DFScript.MC.setScreen(new ScriptListScreen(true)));
2626
return 0;
2727
})
2828
.then(literal("reload")

src/main/java/io/github/techstreet/dfscript/features/AuthHandler.java

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,42 @@
11
package io.github.techstreet.dfscript.features;
22

3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonElement;
35
import com.google.gson.JsonObject;
46
import com.google.gson.JsonParser;
7+
import com.mojang.authlib.exceptions.AuthenticationException;
58
import io.github.techstreet.dfscript.DFScript;
69
import io.github.techstreet.dfscript.loader.Loadable;
710
import io.github.techstreet.dfscript.script.util.AuthcodeResponse;
811
import io.github.techstreet.dfscript.script.util.ServercodeResponse;
912
import io.github.techstreet.dfscript.util.chat.ChatType;
1013
import io.github.techstreet.dfscript.util.chat.ChatUtil;
1114
import net.minecraft.client.util.Session;
15+
import org.apache.commons.codec.digest.DigestUtils;
1216
import org.apache.commons.lang3.RandomStringUtils;
1317

1418
import java.io.BufferedReader;
19+
import java.io.InputStream;
1520
import java.io.InputStreamReader;
1621
import java.io.OutputStream;
1722
import java.net.HttpURLConnection;
1823
import java.net.URL;
24+
import java.nio.charset.Charset;
25+
import java.util.Objects;
1926
import java.util.UUID;
2027

28+
import static io.github.techstreet.dfscript.screen.script.ScriptAddScreen.readAll;
29+
2130
public class AuthHandler implements Loadable {
2231
private static String authCode = null;
32+
private static boolean staff = false;
2333

2434
@Override
2535
public void load() {
36+
regen();
37+
}
38+
39+
public static void regen() {
2640
URL url;
2741
HttpURLConnection con;
2842
String commonSecret;
@@ -31,20 +45,20 @@ public void load() {
3145
try {
3246
// Authorization step one - Create a random clientcode
3347
url = new URL("https://DFScript-Server.techstreetdev.repl.co/auth/secret/");
34-
con = (HttpURLConnection)url.openConnection();
48+
con = (HttpURLConnection) url.openConnection();
3549
con.setRequestMethod("POST");
3650
con.setRequestProperty("Content-Type", "application/json");
3751
con.setRequestProperty("Accept", "application/json");
3852
con.setDoOutput(true);
53+
con.setReadTimeout(5000);
54+
con.setConnectTimeout(5000);
3955

4056
String clientCode = UUID.randomUUID().toString();
4157

4258
obj = new JsonObject();
4359
obj.addProperty("uuid", DFScript.PLAYER_UUID);
4460
obj.addProperty("clientcode", clientCode);
4561

46-
System.out.println(obj);
47-
4862
try (OutputStream os = con.getOutputStream()) {
4963
byte[] input = obj.toString().getBytes("utf-8");
5064
os.write(input, 0, input.length);
@@ -59,16 +73,28 @@ public void load() {
5973
}
6074

6175
ServercodeResponse servercodeResponse = DFScript.GSON.fromJson(response.toString(), ServercodeResponse.class);
62-
commonSecret = servercodeResponse.getServercode();
76+
commonSecret = DigestUtils.sha256Hex(servercodeResponse.getServercode() + clientCode);
77+
commonSecret = commonSecret.substring(0, 30);
78+
}
79+
80+
// Authorization step two - Fake server connect
81+
try {
82+
Session session = DFScript.MC.getSession();
83+
DFScript.MC.getSessionService().joinServer(session.getProfile(), session.getAccessToken(), commonSecret);
84+
} catch (AuthenticationException e) {
85+
DFScript.LOGGER.error(e.getMessage());
86+
e.printStackTrace();
6387
}
6488

6589
// Authorization step two - Generate the authcode
66-
url = new URL("https://DFScript-Server.techstreetdev.repl.co/auth/secret/");
67-
con = (HttpURLConnection)url.openConnection();
90+
url = new URL("https://DFScript-Server.techstreetdev.repl.co/auth/auth/");
91+
con = (HttpURLConnection) url.openConnection();
6892
con.setRequestMethod("POST");
6993
con.setRequestProperty("Content-Type", "application/json");
7094
con.setRequestProperty("Accept", "application/json");
7195
con.setDoOutput(true);
96+
con.setReadTimeout(5000);
97+
con.setConnectTimeout(5000);
7298

7399
obj = new JsonObject();
74100
obj.addProperty("secret", commonSecret);
@@ -89,7 +115,29 @@ public void load() {
89115

90116
AuthcodeResponse authcodeResponse = DFScript.GSON.fromJson(response.toString(), AuthcodeResponse.class);
91117
authCode = authcodeResponse.getAuthcode();
92-
DFScript.LOGGER.info("Authorization code successfully generated: " + authCode);
118+
DFScript.LOGGER.info("Server authorization code successfully generated!");
119+
}
120+
} catch (Exception e) {
121+
e.printStackTrace();
122+
}
123+
124+
try {
125+
InputStream is = new URL("https://dfscript-server.techstreetdev.repl.co/staff/").openStream();
126+
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
127+
obj = JsonParser.parseString(readAll(rd)).getAsJsonObject();
128+
129+
JsonArray array = obj.get("staff").getAsJsonArray();
130+
boolean localStaff = false;
131+
132+
for (JsonElement staffMember : array) {
133+
if (Objects.equals(staffMember.getAsString(), DFScript.PLAYER_UUID)) {
134+
staff = true;
135+
localStaff = true;
136+
}
137+
}
138+
139+
if (!localStaff) {
140+
staff = false;
93141
}
94142
} catch (Exception e) {
95143
e.printStackTrace();
@@ -99,4 +147,8 @@ public void load() {
99147
public static String getAuthCode() {
100148
return authCode;
101149
}
150+
151+
public static boolean getStaffMember() {
152+
return staff;
153+
}
102154
}

src/main/java/io/github/techstreet/dfscript/mixin/render/MMultiplayerScreen.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ protected MMultiplayerScreen(Text title) {
2424
@Inject(at = @At("HEAD"), method = "render", cancellable = true)
2525
private void render(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) {
2626
this.addDrawableChild(new BlendableTexturedButtonWidget(5, 5, 20, 20, 0, 0, 20, identifier_main, 20, 40, (button) -> {
27-
DFScript.MC.setScreen(new ScriptListScreen());
28-
}));
27+
ScriptListScreen screen = new ScriptListScreen(false);
28+
DFScript.MC.setScreen(screen);
29+
}));
2930
}
3031
}

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptAddScreen.java

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package io.github.techstreet.dfscript.screen.script;
22

3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonElement;
35
import com.google.gson.JsonObject;
46
import com.google.gson.JsonParser;
57
import io.github.techstreet.dfscript.DFScript;
8+
import io.github.techstreet.dfscript.features.AuthHandler;
69
import io.github.techstreet.dfscript.screen.CScreen;
710
import io.github.techstreet.dfscript.screen.widget.CButton;
811
import io.github.techstreet.dfscript.screen.widget.CPlainPanel;
@@ -11,19 +14,21 @@
1114
import io.github.techstreet.dfscript.screen.widget.CTextField;
1215
import io.github.techstreet.dfscript.script.ScriptManager;
1316
import io.github.techstreet.dfscript.script.VirtualScript;
14-
import java.io.BufferedReader;
15-
import java.io.IOException;
16-
import java.io.InputStream;
17-
import java.io.InputStreamReader;
18-
import java.io.Reader;
17+
18+
import java.io.*;
19+
import java.net.HttpURLConnection;
1920
import java.net.URL;
2021
import java.nio.charset.Charset;
21-
import java.util.ArrayList;
22-
import java.util.List;
22+
import java.util.*;
23+
24+
import net.minecraft.text.LiteralTextContent;
25+
import net.minecraft.text.MutableText;
2326
import net.minecraft.text.Text;
2427

2528
public class ScriptAddScreen extends CScreen {
2629
public static ArrayList<VirtualScript> scripts = new ArrayList<>();
30+
public static HashMap<String, VirtualScript> scriptHash = new HashMap<>();
31+
2732
CScrollPanel panel;
2833
CTextField searchBox;
2934

@@ -69,18 +74,43 @@ private void update() {
6974
public static void getScripts() {
7075
ArrayList<VirtualScript> scripts = new ArrayList<>();
7176

77+
try {
78+
URL url = new URL("https://DFScript-Server.techstreetdev.repl.co/check/");
79+
HttpURLConnection con = (HttpURLConnection) url.openConnection();
80+
con.setRequestMethod("GET");
81+
con.setRequestProperty("authorization", AuthHandler.getAuthCode());
82+
con.setDoOutput(true);
83+
84+
con.getInputStream();
85+
if (con.getResponseCode() != 204) {
86+
AuthHandler.regen();
87+
}
88+
} catch (Exception e) {
89+
AuthHandler.regen();
90+
e.printStackTrace();
91+
}
92+
7293
try {
7394
InputStream is = new URL("https://dfscript-server.techstreetdev.repl.co/scripts/get").openStream();
7495
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
7596
JsonObject obj = JsonParser.parseString(readAll(rd)).getAsJsonObject();
7697

7798
for (String key : obj.keySet()) {
7899
JsonObject scriptObject = obj.getAsJsonObject(key);
79-
scripts.add(new VirtualScript(scriptObject.get("name").getAsString(), scriptObject.get("owner").getAsString(), key));
100+
101+
VirtualScript script = new VirtualScript(scriptObject.get("name").getAsString(), scriptObject.get("owner").getAsString(), key);
102+
script.setApproved(scriptObject.get("approved").getAsBoolean());
103+
script.setApprover((scriptObject.get("approvedBy").isJsonNull() ? "None" : scriptObject.get("approvedBy").getAsString()));
104+
105+
scripts.add(script);
80106
}
81107

82108
is.close();
83109

110+
for (VirtualScript s : scripts) {
111+
ScriptAddScreen.scriptHash.put(s.getId(), s);
112+
}
113+
84114
ScriptAddScreen.scripts = scripts;
85115
} catch (Exception e) {
86116
e.printStackTrace();
@@ -107,7 +137,7 @@ private void fillPanel(List<VirtualScript> scriptList) {
107137
panel.add(newButton);
108138

109139
for (VirtualScript script : scriptList) {
110-
CButton button = new CButton(7, y, 96, 10, script.getName(), () -> {
140+
CButton button = new CButton(7, y, 96, 10, (script.isApproved() ? "§e⭐ " : "") + "§f" + script.getName(), () -> {
111141
DFScript.MC.setScreen(new ScriptInstallScreen(script));
112142
});
113143

@@ -124,6 +154,6 @@ private void fillPanel(List<VirtualScript> scriptList) {
124154

125155
@Override
126156
public void close() {
127-
DFScript.MC.setScreen(new ScriptListScreen());
157+
DFScript.MC.setScreen(new ScriptListScreen(true));
128158
}
129159
}

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptCreationScreen.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected ScriptCreationScreen() {
3434
}
3535

3636
ScriptManager.getInstance().createScript(name.getText());
37-
DFScript.MC.setScreen(new ScriptListScreen());
37+
DFScript.MC.setScreen(new ScriptListScreen(true));
3838
}));
3939

4040
widgets.add(new CButton(50, 42, 48, 15, "Cancel", () -> {

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptDeletionScreen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ public ScriptDeletionScreen(Script script) {
1313

1414
widgets.add(new CButton(5,4,90,20,"Delete",() -> {
1515
ScriptManager.getInstance().deleteScript(script);
16-
DFScript.MC.setScreen(new ScriptListScreen());
16+
DFScript.MC.setScreen(new ScriptListScreen(true));
1717
}));
1818

1919
widgets.add(new CButton(5,28,90,20,"Abort",() -> {
20-
DFScript.MC.setScreen(new ScriptListScreen());
20+
DFScript.MC.setScreen(new ScriptListScreen(true));
2121
}));
2222
}
2323

2424
@Override
2525
public void close() {
26-
DFScript.MC.setScreen(new ScriptListScreen());
26+
DFScript.MC.setScreen(new ScriptListScreen(true));
2727
}
2828
}

src/main/java/io/github/techstreet/dfscript/screen/script/ScriptEditScreen.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,10 @@ public boolean mouseClicked(double x, double y, int button) {
175175
index++;
176176
}
177177

178-
CButton add = new CButton(36, y, 46, 8, "Add", () -> {
178+
CButton add = new CButton(37, y, 46, 8, "Add", () -> {
179179
DFScript.MC.setScreen(new ScriptActionCategoryScreen(script, script.getParts().size()));
180180
});
181181

182-
panel.add(new CTexturedButton(84, y, 8, 8, DFScript.MOD_ID + ":wrench.png", () -> {
183-
184-
}, 0,0,1,0.5f,0,0.5f));
185-
186182
panel.add(add);
187183
panel.setScroll(scroll);
188184
}
@@ -191,7 +187,7 @@ public boolean mouseClicked(double x, double y, int button) {
191187
public void close() {
192188
scroll = panel.getScroll();
193189
ScriptManager.getInstance().saveScript(script);
194-
DFScript.MC.setScreen(new ScriptListScreen());
190+
DFScript.MC.setScreen(new ScriptListScreen(true));
195191
}
196192

197193
@Override

0 commit comments

Comments
 (0)