Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
public void login(String userName, String password) {
try {
String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13;
String result = Util.excutePost("http://mysite.ru/auth.php", parameters);
if (result == null) {
showError("Невозможно подключится к серверу!");
loginForm.setNoNetwork();
return;
}
if (!result.contains(":")) {
if (result.trim().equals("Bad login")) {
showError("Неправильный логин или пароль!");
} else if (result.trim().equals("Old version")) {
loginForm.setOutdated();
showError("Нужно обновить лаунчер!");
} else {
showError(result);
}
loginForm.setNoNetwork();
return;
}
String[] values = result.split(":");
launcher = new Launcher();
launcher.customParameters.putAll(customParameters);
launcher.customParameters.put("userName", values[2].trim());
launcher.customParameters.put("latestVersion", values[0].trim());
launcher.customParameters.put("downloadTicket", values[1].trim());
launcher.customParameters.put("sessionId", values[3].trim());
launcher.init();
removeAll();
add(launcher, "Center");
validate();
launcher.start();
loginForm.loginOk();
loginForm = null;
setTitle("Minecraft");
} catch (Exception e) {
e.printStackTrace();
showError(e.toString());
loginForm.setNoNetwork();
}
}
<?php
// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке
$serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером
if ($clientHash == $serverHash)
{
echo 'YES';
}
else
{
echo 'NO';
}
?>
<?php
// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке
$serverHash = 46820331c120721ddb0a30354e9b4ac0; //хеш расчитываемый сервером
if ($clientHash == $serverHash)
{
echo 'YES';
}
else
{
echo 'NO';
}
?>
http://sait.ru/up/sk.php?hash=46820331c120721ddb0a30354e9b4ac0
http://sait.ru/up/sk.php?hash=165

import java.io.FileInputStream;
import java.net.URL;
import java.io.InputStreamReader;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.security.MessageDigest;
import java.security.DigestInputStream;
import java.util.Formatter;
import java.io.*;
import java.net.URL;
import java.security.MessageDigest;
import java.security.DigestInputStream;
import java.util.Formatter;
А вот для этого уже используется проверка md5 клиент<->сервер или же клиент(локальный)<->клиент(удаленный) отключением кнопки "сетевая игра"Может чего то не понял, но тут чувствуется 1 большой изъян. Если узнать где на сервере храняться auth.php и т.п. Злоумышленник может собрать лаунчер без проверки md5 и спокойно зайти с ним на сервер. Как понимаю нужно на подходе к auth.php, перед проверкой связки логин пароля, проверять идентификатор лаунчера. Мол не тот = die.
Если не верно расписал сильно не бить.
Ведь даже переименовав auth.php,joinserver.php. Пряча их в самый дальний угол web сервера, закрывая все directory deny from all и храня лаунчер в .exe все равно клиент может перехватить куда конектиться лаунчер.
public static String calculateHash(MessageDigest algorithm,
String fileName) throws Exception{
FileInputStream fis = new FileInputStream(fileName);
BufferedInputStream bis = new BufferedInputStream(fis);
DigestInputStream dis = new DigestInputStream(bis, algorithm);
while (dis.read() != -1);
byte[] hash = algorithm.digest();
return byteArray2Hex(hash);
}
private static String byteArray2Hex(byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash) {
formatter.format("%02x", b);
}
return formatter.toString();
}
//--------------------------------
// public String getFakeResult(String userName) {
// return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:";
// }
//---------------------------------
String applicationData = System.getenv("APPDATA");
String f = applicationData + "/.minecraft/bin/minecraft.jar";
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
String p = calculateHash(md5, f);
URL localURL = new URL("http://путь к папке с minecraft.jar на сайте/hash.php?hash=" + p);
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream()));
String str2 = localBufferedReader.readLine();
if (str2.equalsIgnoreCase("NO")){
{
GameUpdater.forceUpdate = true;
}
}
else if (str2.equalsIgnoreCase("YES"))
{
}
}
catch(FileNotFoundException fnfn)
{
}
public void login(String userName, String password) {
try {
String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13;
String result = Util.excutePost("http://ваш путь к auth/auth.php", parameters);
// String result = getFakeResult(userName);
if (result == null) {
showError("Невозможно подключится к серверу!");
loginForm.setNoNetwork();
return;
}
import java.io.FileInputStream;
import java.net.URL;
import java.io.InputStreamReader;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.security.MessageDigest;
import java.security.DigestInputStream;
import java.util.Formatter;
package net.minecraft;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import javax.swing.UIManager;
<?php
// Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером.
$clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке
$serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером
if ($clientHash == $serverHash)
{
echo 'YES';
}
else
{
echo 'NO';
}
?>
НА 1.2.5?Все получилось! Вот инструкция:
Код:public static String calculateHash(MessageDigest algorithm, String fileName) throws Exception{ FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); DigestInputStream dis = new DigestInputStream(bis, algorithm); while (dis.read() != -1); byte[] hash = algorithm.digest(); return byteArray2Hex(hash); } private static String byteArray2Hex(byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } return formatter.toString(); }
1.Верхний код вставляем в LauncherFrame после вот этого, что внизу:
Код://-------------------------------- // public String getFakeResult(String userName) { // return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:"; // } //---------------------------------
Код:String applicationData = System.getenv("APPDATA"); String f = applicationData + "/.minecraft/bin/minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://путь к папке с minecraft.jar на сайте/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } } catch(FileNotFoundException fnfn) { }
2.Код, что выше вставляем после:
Код:public void login(String userName, String password) { try { String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13; String result = Util.excutePost("http://ваш путь к auth/auth.php", parameters); // String result = getFakeResult(userName); if (result == null) { showError("Невозможно подключится к серверу!"); loginForm.setNoNetwork(); return; }
Код:import java.io.FileInputStream; import java.net.URL; import java.io.InputStreamReader; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.security.MessageDigest; import java.security.DigestInputStream; import java.util.Formatter;
3. Вставляем верхний код туда же в LauncherFrame в самом верху файла после этих строк
Код:package net.minecraft; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.UIManager;
4.Потом на сайте создаем файл hash.php в папке, где у вас лежит minecraft.jar и пишем в него:
Код:<?php // Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером. $clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке $serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером if ($clientHash == $serverHash) { echo 'YES'; } else { echo 'NO'; } ?>
Всё должно работать! У меня всё работает прекрасно!!!
Все получилось! Вот инструкция:
Код:public static String calculateHash(MessageDigest algorithm, String fileName) throws Exception{ FileInputStream fis = new FileInputStream(fileName); BufferedInputStream bis = new BufferedInputStream(fis); DigestInputStream dis = new DigestInputStream(bis, algorithm); while (dis.read() != -1); byte[] hash = algorithm.digest(); return byteArray2Hex(hash); } private static String byteArray2Hex(byte[] hash) { Formatter formatter = new Formatter(); for (byte b : hash) { formatter.format("%02x", b); } return formatter.toString(); }
1.Верхний код вставляем в LauncherFrame после вот этого, что внизу:
Код://-------------------------------- // public String getFakeResult(String userName) { // return Util.getFakeLatestVersion() + ":35b9fd01865fda9d70b157e244cf801c:" + userName + ":12345:"; // } //---------------------------------
Код:String applicationData = System.getenv("APPDATA"); String f = applicationData + "/.minecraft/bin/minecraft.jar"; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); String p = calculateHash(md5, f); URL localURL = new URL("http://путь к папке с minecraft.jar на сайте/hash.php?hash=" + p); BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localURL.openStream())); String str2 = localBufferedReader.readLine(); if (str2.equalsIgnoreCase("NO")){ { GameUpdater.forceUpdate = true; } } else if (str2.equalsIgnoreCase("YES")) { } } catch(FileNotFoundException fnfn) { }
2.Код, что выше вставляем после:
Код:public void login(String userName, String password) { try { String parameters = "user=" + URLEncoder.encode(userName, "UTF-8") + "&password=" + URLEncoder.encode(password, "UTF-8") + "&version=" + 13; String result = Util.excutePost("http://ваш путь к auth/auth.php", parameters); // String result = getFakeResult(userName); if (result == null) { showError("Невозможно подключится к серверу!"); loginForm.setNoNetwork(); return; }
Код:import java.io.FileInputStream; import java.net.URL; import java.io.InputStreamReader; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.security.MessageDigest; import java.security.DigestInputStream; import java.util.Formatter;
3. Вставляем верхний код туда же в LauncherFrame в самом верху файла после этих строк
Код:package net.minecraft; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Frame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.IOException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import javax.imageio.ImageIO; import javax.swing.JPanel; import javax.swing.UIManager;
4.Потом на сайте создаем файл hash.php в папке, где у вас лежит minecraft.jar и пишем в него:
Код:<?php // Файл со скриптом положить на сервер рядом с файлом "minecraft.jar", хеш которого будет расчитываться для сверки c хешем передаваемым лаунчером. $clientHash = $_GET['hash']; //хеш передаваемый лаунчером по ссылке $serverHash = md5_file('minecraft.jar'); //хеш расчитываемый сервером if ($clientHash == $serverHash) { echo 'YES'; } else { echo 'NO'; } ?>
Всё должно работать! У меня всё работает прекрасно!!!