esoe
2 years ago
14 changed files with 107 additions and 157 deletions
@ -0,0 +1,45 @@ |
|||||||
|
body { |
||||||
|
font-family: Arial; |
||||||
|
padding: 20px; |
||||||
|
background: #f1f1f1; |
||||||
|
} |
||||||
|
div { |
||||||
|
background-color: rgb(181, 122, 236); |
||||||
|
padding: 5px; |
||||||
|
margin: 5px; |
||||||
|
} |
||||||
|
.header{ |
||||||
|
display: block; |
||||||
|
padding: 30px; |
||||||
|
font-size: 40px; |
||||||
|
text-align: center; |
||||||
|
background: rgb(181, 122, 236); |
||||||
|
/*position: relative; top: 20px;*/ |
||||||
|
} |
||||||
|
.controls{ |
||||||
|
/*position: relative; left: 20px;*/ |
||||||
|
list-style: none; /* Отключение отображения маркеров. */ |
||||||
|
width: 25%; /* Ширина меню. */ |
||||||
|
float: left; |
||||||
|
/*padding-left: 20px;*/ |
||||||
|
} |
||||||
|
.controls li { |
||||||
|
margin: 5px; /* Отступ между блоками по высоте, необходимый для того чтобы пункты меню не сливались */ |
||||||
|
font-family: Verdana, Arial, Helvetica, sans-serif; /* Тип шрифта пунктов меню */ |
||||||
|
font-size: 14px; /* Размер текста меню */ |
||||||
|
} |
||||||
|
.controls li a{ |
||||||
|
display: block; /* Изменение отображения на блочное для того, чтобы иметь возможность задать внутренние отступы. */ |
||||||
|
padding: 4px 15px; /* Отступы внутри блоков. */ |
||||||
|
background: #0db5b5; /* Цвет блоков меню. */ |
||||||
|
color: #3f3f3f; /* Цвет текста в блоках меню. */ |
||||||
|
text-decoration: none; /* Устранение подчёркивания ссылок. */ |
||||||
|
position: relative; /* Это необходимо при использовании Internet Explorer 6 для того, чтобы ссылка по всей своей площади была «кликабельной». */ |
||||||
|
} |
||||||
|
.controls li a:hover { |
||||||
|
background: #92d3d3; /* Цвет фона при наведении курсора мыши */ |
||||||
|
color: #6b6b6b; /* Цвет текста при наведении курсора мыши */ |
||||||
|
} |
||||||
|
.mainframe{ |
||||||
|
background-color: aliceblue; |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
<!DOCTYPE html> |
||||||
|
<html lang="en"> |
||||||
|
<head> |
||||||
|
<meta charset="UTF-8"> |
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||||
|
<title>molokoin.ru</title> |
||||||
|
<link rel="stylesheet" type="text/css" href="css/style.css"> |
||||||
|
</head> |
||||||
|
<body> |
||||||
|
<div class="header"> |
||||||
|
molokoin.ru/ добавить картинку и кнопку авторизации |
||||||
|
</div> |
||||||
|
<div class="controls"> |
||||||
|
<li><a href="http://molokoin.ru:3000/esoe">gitea</a></li> |
||||||
|
<li><a href="http://www.molokoin.ru:8080">apache</a></li> |
||||||
|
<li><a href="http://www.egspt.ru">moodle</a></li> |
||||||
|
<li><a href="http://isp12.adminvps.ru">adminvps</a></li> |
||||||
|
|
||||||
|
</div> |
||||||
|
<script src="js/main.js"></script> |
||||||
|
</body> |
||||||
|
</html> |
Binary file not shown.
@ -1,148 +0,0 @@ |
|||||||
package ru.molokoin.sourceListener; |
|
||||||
|
|
||||||
import java.io.BufferedInputStream; |
|
||||||
import java.io.File; |
|
||||||
import java.io.FileOutputStream; |
|
||||||
import java.io.IOException; |
|
||||||
import java.net.URI; |
|
||||||
import java.net.http.HttpClient; |
|
||||||
import java.net.http.HttpRequest; |
|
||||||
import java.net.http.HttpResponse; |
|
||||||
import java.nio.file.Path; |
|
||||||
import java.nio.file.StandardOpenOption; |
|
||||||
import java.util.Enumeration; |
|
||||||
import java.util.zip.ZipEntry; |
|
||||||
import java.util.zip.ZipFile; |
|
||||||
|
|
||||||
import org.eclipse.jgit.api.Git; |
|
||||||
import org.eclipse.jgit.api.errors.GitAPIException; |
|
||||||
import org.eclipse.jgit.api.errors.InvalidRemoteException; |
|
||||||
import org.eclipse.jgit.api.errors.TransportException; |
|
||||||
import org.eclipse.jgit.lib.Repository; |
|
||||||
|
|
||||||
import com.fasterxml.jackson.core.exc.StreamReadException; |
|
||||||
import com.fasterxml.jackson.databind.DatabindException; |
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper; |
|
||||||
|
|
||||||
public class SourceListener { |
|
||||||
public Options opt; |
|
||||||
public String optionsPath = "options-home.json"; |
|
||||||
public SourceListener(){ |
|
||||||
try { |
|
||||||
opt = readOptions(); |
|
||||||
} catch (StreamReadException e) { |
|
||||||
System.out.println(e.getMessage()); |
|
||||||
e.printStackTrace(); |
|
||||||
} catch (DatabindException e) { |
|
||||||
System.out.println(e.getMessage()); |
|
||||||
e.printStackTrace(); |
|
||||||
} catch (IOException e) { |
|
||||||
System.out.println(e.getMessage()); |
|
||||||
e.printStackTrace(); |
|
||||||
} |
|
||||||
} |
|
||||||
/** |
|
||||||
* Метод запускает бесконечный цикл проверки обновлений в репозитарии. |
|
||||||
*/ |
|
||||||
public void live(){ |
|
||||||
//
|
|
||||||
} |
|
||||||
/** |
|
||||||
* Метод проверяет, поступили ли обновления в репозитарий |
|
||||||
* @return |
|
||||||
*/ |
|
||||||
public boolean isUpdated(){ |
|
||||||
try { |
|
||||||
Repository repo = RepoCrafter.copy(opt.getGitLink(), new File(opt.getGitLocalPath())); |
|
||||||
System.out.println(repo.getConfig()); |
|
||||||
System.out.println(repo.getIndexFile()); |
|
||||||
Git git = new Git(repo); |
|
||||||
|
|
||||||
|
|
||||||
//repo.close();
|
|
||||||
} catch (InvalidRemoteException e) { |
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace(); |
|
||||||
} catch (TransportException e) { |
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace(); |
|
||||||
} catch (IOException e) { |
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace(); |
|
||||||
} catch (GitAPIException e) { |
|
||||||
// TODO Auto-generated catch block
|
|
||||||
e.printStackTrace(); |
|
||||||
} |
|
||||||
return true; |
|
||||||
} |
|
||||||
/** |
|
||||||
* Извлечение данных из options.json |
|
||||||
* @return |
|
||||||
* @throws StreamReadException |
|
||||||
* @throws DatabindException |
|
||||||
* @throws IOException |
|
||||||
*/ |
|
||||||
public Options readOptions() throws StreamReadException, DatabindException, IOException{ |
|
||||||
Options opt; |
|
||||||
ObjectMapper mapper = new ObjectMapper(); |
|
||||||
opt = mapper.readValue(new File(optionsPath), Options.class); |
|
||||||
return opt; |
|
||||||
} |
|
||||||
public Options getOpt() { |
|
||||||
return opt; |
|
||||||
} |
|
||||||
/** |
|
||||||
* распаковка архива |
|
||||||
*/ |
|
||||||
public void extract()throws IOException{ |
|
||||||
//считываем настройки извлечения
|
|
||||||
try (ZipFile file = new ZipFile(opt.getZipPath())){ |
|
||||||
Enumeration<? extends ZipEntry> zipEntries = file.entries(); |
|
||||||
while (zipEntries.hasMoreElements()){ |
|
||||||
ZipEntry zipEntry = zipEntries.nextElement(); |
|
||||||
File newFile = new File(opt.getUnzipPath(), zipEntry.getName()); |
|
||||||
newFile.getParentFile().mkdirs(); |
|
||||||
if (!zipEntry.isDirectory()){ |
|
||||||
try (FileOutputStream outputStream = new FileOutputStream(newFile)){ |
|
||||||
BufferedInputStream inputStream = new BufferedInputStream(file.getInputStream(zipEntry)); |
|
||||||
while (inputStream.available() > 0){ |
|
||||||
outputStream.write(inputStream.read()); |
|
||||||
} |
|
||||||
inputStream.close(); |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
/** |
|
||||||
* скачиваем архив проекта из системы контроля версий, |
|
||||||
* или иной файл с другого ресурса ... |
|
||||||
*/ |
|
||||||
public void download(){ |
|
||||||
HttpClient client = HttpClient.newHttpClient(); |
|
||||||
HttpRequest request = HttpRequest.newBuilder() |
|
||||||
.uri(URI.create(opt.getZipLink())) |
|
||||||
.build(); |
|
||||||
try { |
|
||||||
HttpResponse<Path> response = client.send(request, |
|
||||||
HttpResponse.BodyHandlers.ofFileDownload(Path.of(opt.getDownloadPath()), StandardOpenOption.CREATE, StandardOpenOption.WRITE)); |
|
||||||
System.out.println(response.statusCode()); |
|
||||||
System.out.println(response.headers()); |
|
||||||
Path path = response.body(); |
|
||||||
System.out.println("Path = " + path); |
|
||||||
} catch (Exception e) { |
|
||||||
System.out.println(e.getMessage()); |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
public static void main(String[] args) { |
|
||||||
SourceListener ear = new SourceListener(); |
|
||||||
// try {
|
|
||||||
// ear.download();
|
|
||||||
// ear.extract();
|
|
||||||
// } catch (IOException e) {
|
|
||||||
// System.out.println(e.getMessage());
|
|
||||||
// }
|
|
||||||
ear.isUpdated(); |
|
||||||
} |
|
||||||
} |
|
@ -0,0 +1,32 @@ |
|||||||
|
package ru.molokoin.sourceListener.net; |
||||||
|
|
||||||
|
import java.net.URI; |
||||||
|
import java.net.http.HttpClient; |
||||||
|
import java.net.http.HttpRequest; |
||||||
|
import java.net.http.HttpResponse; |
||||||
|
import java.nio.file.Path; |
||||||
|
import java.nio.file.StandardOpenOption; |
||||||
|
|
||||||
|
public class Service { |
||||||
|
/** |
||||||
|
* Метод cкачивает файл c удаленного ресурса и размещает в указанной папке на локальном устройстве |
||||||
|
* @param sourceLink |
||||||
|
* @param localPath |
||||||
|
*/ |
||||||
|
public static void download(String sourceLink, String localPath){ |
||||||
|
HttpClient client = HttpClient.newHttpClient(); |
||||||
|
HttpRequest request = HttpRequest.newBuilder() |
||||||
|
.uri(URI.create(sourceLink)) |
||||||
|
.build(); |
||||||
|
try { |
||||||
|
HttpResponse<Path> response = client.send(request, |
||||||
|
HttpResponse.BodyHandlers.ofFileDownload(Path.of(localPath), StandardOpenOption.CREATE, StandardOpenOption.WRITE)); |
||||||
|
System.out.println(response.statusCode()); |
||||||
|
System.out.println(response.headers()); |
||||||
|
Path path = response.body(); |
||||||
|
System.out.println("Path = " + path); |
||||||
|
} catch (Exception e) { |
||||||
|
System.out.println(e.getMessage()); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package ru.molokoin.sourceListener; |
package ru.molokoin.sourceListener.opt; |
||||||
|
|
||||||
public class Options { |
public class Options { |
||||||
private String zipLink; |
private String zipLink; |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue