From e3f44aa8b40ed6b6c71f613d4250b4c0be0d91bc Mon Sep 17 00:00:00 2001 From: esoe Date: Mon, 10 Jul 2023 19:20:11 +0300 Subject: [PATCH] qq --- pom.xml | 4 +- .../ru/molokoin/home/servlets/Delete.java | 37 +++ .../ru/molokoin/home/servlets/Download.java | 48 ++++ .../ru/molokoin/home/servlets/Storage.java | 219 +++++++++++------- .../java/ru/molokoin/home/util/HardDrive.java | 76 ++++++ .../ru/molokoin/home/entities/Media.class | Bin 962 -> 962 bytes .../ru/molokoin/home/servlets/Delete.class | Bin 0 -> 1948 bytes .../ru/molokoin/home/servlets/Download.class | Bin 0 -> 2988 bytes .../ru/molokoin/home/servlets/Main.class | Bin 2129 -> 2129 bytes .../ru/molokoin/home/servlets/Storage.class | Bin 4564 -> 7477 bytes .../ru/molokoin/home/util/HardDrive.class | Bin 0 -> 4662 bytes target/home.war | Bin 816833 -> 823377 bytes .../ru/molokoin/home/entities/Media.class | Bin 962 -> 962 bytes .../ru/molokoin/home/servlets/Delete.class | Bin 0 -> 1948 bytes .../ru/molokoin/home/servlets/Download.class | Bin 0 -> 2988 bytes .../ru/molokoin/home/servlets/Main.class | Bin 2129 -> 2129 bytes .../ru/molokoin/home/servlets/Storage.class | Bin 4564 -> 7477 bytes .../ru/molokoin/home/util/HardDrive.class | Bin 0 -> 4662 bytes .../compile/default-compile/createdFiles.lst | 3 + .../compile/default-compile/inputFiles.lst | 3 + 20 files changed, 306 insertions(+), 84 deletions(-) create mode 100644 src/main/java/ru/molokoin/home/servlets/Delete.java create mode 100644 src/main/java/ru/molokoin/home/servlets/Download.java create mode 100644 src/main/java/ru/molokoin/home/util/HardDrive.java create mode 100644 target/classes/ru/molokoin/home/servlets/Delete.class create mode 100644 target/classes/ru/molokoin/home/servlets/Download.class create mode 100644 target/classes/ru/molokoin/home/util/HardDrive.class create mode 100644 target/home/WEB-INF/classes/ru/molokoin/home/servlets/Delete.class create mode 100644 target/home/WEB-INF/classes/ru/molokoin/home/servlets/Download.class create mode 100644 target/home/WEB-INF/classes/ru/molokoin/home/util/HardDrive.class diff --git a/pom.xml b/pom.xml index 8c57cb3..491f6df 100644 --- a/pom.xml +++ b/pom.xml @@ -15,8 +15,8 @@ UTF-8 - 1.7 - 1.7 + 17 + 17 diff --git a/src/main/java/ru/molokoin/home/servlets/Delete.java b/src/main/java/ru/molokoin/home/servlets/Delete.java new file mode 100644 index 0000000..ff0fcfa --- /dev/null +++ b/src/main/java/ru/molokoin/home/servlets/Delete.java @@ -0,0 +1,37 @@ +package ru.molokoin.home.servlets; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; + +/** + * Сервлет удаляющий файл из хранилища + */ +@WebServlet(name = "Delete", value = "/delete") +public class Delete extends HttpServlet{ + private String STORAGE_PATH = "/srv/apps/home/exchange"; + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + + //Узнать имя файла из запроса + String fileName = request.getParameter("filename"); + + //Удаление файла + File fileToDelete = new File(STORAGE_PATH + File.separator + fileName); + fileToDelete.delete(); + //после скачивания возвращаем пользователя в хранилище + response.sendRedirect("storage"); + } + +} diff --git a/src/main/java/ru/molokoin/home/servlets/Download.java b/src/main/java/ru/molokoin/home/servlets/Download.java new file mode 100644 index 0000000..a43947d --- /dev/null +++ b/src/main/java/ru/molokoin/home/servlets/Download.java @@ -0,0 +1,48 @@ +package ru.molokoin.home.servlets; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.charset.StandardCharsets; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import ru.molokoin.home.util.HardDrive; + +@WebServlet(name = "Download", value = "/download") +public class Download extends HttpServlet{ + private String STORAGE_PATH = HardDrive.root; + private final int ARBITARY_SIZE = 1048;//размер буфера при чтении файла + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { + request.setCharacterEncoding("UTF-8"); + //response.setContentType("text/html; charset=UTF-8"); + + response.setContentType("text/plain; charset=UTF-8"); + //Узнать имя файла из запроса + String fileName = request.getParameter("filename"); + response.setHeader("Content-disposition", "attachment; filename=" + fileName); + + //Отдаем файл с сервера + File file = new File(STORAGE_PATH + File.separator + fileName); + try(InputStream in = new FileInputStream(file); + OutputStream out = response.getOutputStream()) { + + byte[] buffer = new byte[ARBITARY_SIZE]; + + int numBytesRead; + while ((numBytesRead = in.read(buffer)) > 0) { + out.write(buffer, 0, numBytesRead); + } + } + //после скачивания возвращаем пользователя в хранилище + response.sendRedirect("storage"); + } + +} diff --git a/src/main/java/ru/molokoin/home/servlets/Storage.java b/src/main/java/ru/molokoin/home/servlets/Storage.java index 62e8f68..5cbc7db 100644 --- a/src/main/java/ru/molokoin/home/servlets/Storage.java +++ b/src/main/java/ru/molokoin/home/servlets/Storage.java @@ -8,7 +8,14 @@ import java.io.InputStreamReader; import java.io.PrintWriter; import java.io.Reader; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.Collection; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.MultipartConfig; @@ -20,11 +27,13 @@ import jakarta.servlet.http.Part; /** * Сервлет файлообменника */ -@MultipartConfig(fileSizeThreshold = 2024 * 2024, - maxFileSize = 2024 * 2024 * 5, - maxRequestSize = 2024 * 2024 * 5 * 5) +@MultipartConfig +// (fileSizeThreshold = 2024 * 2024, +// maxFileSize = 2024 * 2024 * 5, +// maxRequestSize = 2024 * 2024 * 5 * 5) @WebServlet(name = "Storage", value = "/storage") public class Storage extends HttpServlet{ + private String STORAGE_PATH = "/srv/apps/home/exchange";//TODO Путь разместить в файле настроек приложения *.property /** * Возвращает пользователю страницу, содержащую: * - перечень доступных для скачивания файлов @@ -32,11 +41,10 @@ public class Storage extends HttpServlet{ */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - //page(request, response); request.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=UTF-8"); - PrintWriter out = response.getWriter(); + out.println(""); out.println(""); out.println(""); @@ -52,16 +60,31 @@ public class Storage extends HttpServlet{ out.println("

molokoin.ru : storage

"); out.println(""); out.println(""); out.println("
"); - out.println("

tables of content

"); + + + + + // Отображение содержимого файла + // System.out.println("Проверка filename ..."); + // if (request.getParameter("filename") != null){ + // System.out.println(STORAGE_PATH + "/" + request.getParameter("filename")); + // out.println(""); + // } + + // Отображение списка файлов + out.println(listMain()); + out.println("
"); out.println("
"); out.println("
"); @@ -70,84 +93,116 @@ public class Storage extends HttpServlet{ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - page(request, response); + //page(request, response); + //скачивание файла + try { + upload(request); + } catch (ServletException e) { + //переслать на страницу ошибки + } + response.sendRedirect("storage"); } - private void page(HttpServletRequest request, HttpServletResponse response) throws IOException { - request.setCharacterEncoding("UTF-8"); - response.setContentType("text/html; charset=UTF-8"); - - PrintWriter out = response.getWriter(); - out.println(""); - out.println(""); - out.println(""); - out.println(" "); - out.println(" "); - out.println(" "); - out.println(" home:storage"); - // Подключение стилей - out.println(" "); - out.println(""); - out.println(""); - out.println("
"); - out.println("

molokoin.ru : storage

"); - out.println("
"); - out.println(""); - out.println("
"); - out.println("

tables of content

"); - // обработка данных - String description = request.getParameter("description"); // Retrieves - out.println("

"+description+"

"); - - String uploadPath = "/srv/apps/home/exchange"; - File uploadDir = new File(uploadPath); - if (!uploadDir.exists()) { - out.println("

"+"Директория для записи файла: " + uploadPath + " не доступна!!!" + "

"); - } else { - try { - Part filePart = request.getPart("file"); - String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); - out.println("

"+fileName+"

"); - for (Part part : request.getParts()) { - part.write(uploadPath + File.separator + fileName); - //out.println("

"+fileName + "содержит: " + part.getSize()+"

"); - } - } catch (ServletException e) { - //e.printStackTrace(); - } + /** + * Метод загружает на сервер файл выбранный пользователем, + * возвращает строку, содержащую отчет по результатам загрузки + * @param request + * @return + * @throws IOException + * @throws ServletException + */ + private Boolean upload(HttpServletRequest request) throws IOException, ServletException{ + String fileName = ""; + Part filePart = request.getPart("file"); + fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); + for (Part part : request.getParts()) { + part.write(STORAGE_PATH + File.separator + fileName); } - - + return true; + } + /** + * Метод, возвращающий список файлов на сервере + * @return + * @throws IOException + */ + private Set list() throws IOException{ + Stream stream = Files.list(Paths.get(STORAGE_PATH)); + Set list = stream + .filter(file -> !Files.isDirectory(file)) + .map(Path::getFileName) + .map(Path::toString) + .collect(Collectors.toSet()); + stream.close(); + return list; + } + /** + * Метод формирует список файлов и директорий, + * для отображения на боковой панели страницы + * Инструменты управления файлами: + * - просмотр списка файлов и директорий + * - просмотр файла + * - просмотр содержимого директории + * - + * + * @return + * @throws IOException + */ + private String listSide() throws IOException{ + StringBuilder report = new StringBuilder(); + Set list = list(); + for (String filename : list) { + report.append(""); + report.append(filename); + report.append(""); + } + return report.toString(); + } - // Part filePart; - // try { - // filePart = request.getPart("file");// Retrieves - // String fileName = Paths.get(filePart.getSubmittedFileName()).getFileName().toString(); // MSIE fix. - // out.println("

" + fileName + " contains: " + "

"); - // InputStream fileContent = filePart.getInputStream(); - // //читаем из файла - // StringBuilder textBuilder = new StringBuilder(); - // try (Reader reader = new BufferedReader(new InputStreamReader - // (fileContent, StandardCharsets.UTF_8))) { - // int c = 0; - // while ((c = reader.read()) != -1) { - // textBuilder.append((char) c); - // } - // out.println("

" + fileName + " contains: " + textBuilder.toString() + "

"); - // } - // } catch (ServletException e) { - // // TODO Auto-generated catch block - // //e.printStackTrace(); - // out.println("

" + "Файл вызвал ошибку: " + "

"); - // } - out.println("
"); - out.println("
"); - out.println("
"); - out.println(""); + /** + * Метод возвращает перечень доступных файлов на сервере + * - в виде таблицы + * @return + * @throws IOException + */ + private String listMain() throws IOException{ + StringBuilder report = new StringBuilder(); + Set list = list(); + //таблица - перечень файлов + report.append("

" + "Файлы на сервере: " + "

"); + report.append(""); + report.append(""); + report.append(""); + report.append(""); + report.append(""); + report.append(""); + report.append("");//скачать : удалить + report.append(""); + for(String path : list) { + report.append(""); + report.append(""); + report.append(""); + report.append(""); + report.append(""); + //добавляем кнопку скачивания + report.append(""); + report.append(""); + } + report.append("
IDНаименованиеОписаниеДата добавленияcontrols
" + "no id" +"" + path + "" + "no description" + "" + "no date" + ""); + //кнопка скачивания + report.append("
"); + report.append(" "); + report.append(" "); + report.append("
"); + report.append("
"); + //кнопка удаления + report.append("
"); + report.append(" "); + report.append(" "); + report.append("
"); + report.append("
"); + return report.toString(); } diff --git a/src/main/java/ru/molokoin/home/util/HardDrive.java b/src/main/java/ru/molokoin/home/util/HardDrive.java new file mode 100644 index 0000000..74666df --- /dev/null +++ b/src/main/java/ru/molokoin/home/util/HardDrive.java @@ -0,0 +1,76 @@ +package ru.molokoin.home.util; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * Методы работы с данными на жестком диске + */ +public class HardDrive { + public static String root = "/srv/apps/home/exchange"; + + public static String getRoot() { + return root; + } + public static void setRoot(String root) { + HardDrive.root = root; + } + /** + * Метод, возвращающий список файлов в корне хранилища приложения + * @return + * @throws IOException + */ + private static Set listFiles(String path) throws IOException{ + Stream stream = Files.list(Paths.get(path)); + Set list = stream + .filter(file -> !Files.isDirectory(file)) + .map(Path::getFileName) + .map(Path::toString) + .collect(Collectors.toSet()); + stream.close(); + return list; + } + + private static HashMap getMap(String path) throws IOException{ + Stream stream = Files.list(Paths.get(path)); + HashMap map = new HashMap<>(); + return map; + } + + + public static void showFiles(File[] files) { + for (File file : files) { + if (file.isDirectory()) { + System.out.println("Directory: " + file.getAbsolutePath()); + showFiles(file.listFiles()); // Calls same method again. + } else { + System.out.println("File: " + file.getAbsolutePath()); + } + } + } + + /** + * тестируем работу методов HardDrive + * @param args + */ + public static void main(String[] args) { + File dir = new File("C:\\Users\\Strannik\\Documents\\esoe\\code\\home\\src\\main\\webapp\\content"); + new File(dir + File.separator + "inner").mkdirs(); + //showFiles(dir.listFiles()); + System.out.println(Arrays.toString(dir.listFiles())); + for (File file : dir.listFiles()) { + System.out.println(file.getName()); + } + + + } + +} diff --git a/target/classes/ru/molokoin/home/entities/Media.class b/target/classes/ru/molokoin/home/entities/Media.class index 73b0785ad9ebc5cbcd86e9454e81d8a4a71fda72..027493bf8d171b6a2909da4e1495525c3fbd0282 100644 GIT binary patch delta 17 ZcmX@aeu$mp)W2Q(7#J9AH*)M^1^_{0295v# delta 17 ZcmX@aeu$mp)W2Q(7#J9gH*)M^1^_`Z27~|r diff --git a/target/classes/ru/molokoin/home/servlets/Delete.class b/target/classes/ru/molokoin/home/servlets/Delete.class new file mode 100644 index 0000000000000000000000000000000000000000..51be8b8b6cbf747a1c23cc735fa5fdfacfabe743 GIT binary patch literal 1948 zcma)7ZBr9h6n<_9YzSMS0hL&bsGz*MebH8p&?16hBTy1UmA3Yh+>(W4Z@PQK;6Le4 z=+}1II@p>1fc~gXpG`Ih4I?na-TQK0o^#G~PX77#&EEiKu$4p%9Tws?I?*LCyd!s| zZ=@3_f3Kp9Q#PjNEOE&-F9f9JOC8OK)3s zBZ(dhwvG32j<)@}Q`Hr{t6i@t7&!@?M~c3bfSt>)uFpMQc)2#0UlK@VcjTUQDm3Qg zjPH8enFRU-I-lhir|C2)~{(@K3C0Z6Z zKi2LpjBrq3(5U?|7u8B;n6ddZFcV?8gbyrSw(((zVeE7aK}~xBLp>LQ(4JAA$-k

)O6#iR`l`q}#^-g3ne5HFo?59_ zx0IikTNU1b)32`VzTRC0#iz;NFKu^=+R`X6%CtaD=czMX#bVK&qtde5^Ne>l3uBzf|0D&yY*Vgg#S&gBR9ts z!_GfJeDjF>>edd)o;lh{k%@U(spMRvI1@KHjRpT;FMFQy=PNP@6zliB!01~r$6O!B zY~crip?8Zi&&>dFm4iLT!6CSEv~w5Zo=0)1=;@e{^^Yj%@F=X+S-+t<@@U$9W d4PS3U1XxFo4+%cx`Tqjn@|5K6JG_KM`ad-I5-k7# literal 0 HcmV?d00001 diff --git a/target/classes/ru/molokoin/home/servlets/Download.class b/target/classes/ru/molokoin/home/servlets/Download.class new file mode 100644 index 0000000000000000000000000000000000000000..fbdd1202b60683f3b49a334ffa249aa17bc21d03 GIT binary patch literal 2988 zcma)8YjYdb8Geo|>&VJFapVNN(1h6JV)+vFl2U5nw6^2K0>^eOA!AINuB8)eGPTaF5|)iA7Q=XfdXYzQQtuw6SmE6_EZ zDfJ+U9*LBJeJ}(b@f+Ei=Xjf*?PjZ9O=TOQ?PTXHzjDsEx0FEK_qDIRJcU8HAT7tC-w zDx1`$a75y3w6dK@-mN!6=Bl!4DV)WW7Mm707-^5_<}xMigL4LEabDm6L$KHgcTZ|h zWT^MqI*& zWv}{n$SjgPlh0>L`c%=t)4KY*%Z?W)iItYVW_=c`zIWAHcT@@`tQvS0Yb-FUQYkd* zbzcR6B87qWAncx?H?$qaB)&zB0Rv}kFhvLPZ3C80dm~V8Wm#2hUzJ&4y{$wlSx!TB z0r3GEIpbAG_`tmFs)a^vUHL`LMmG_!Y&j*%xAi*OjE7Y_5I8=6@BYEuNmRTgPnUK{ z^S?VPpKg6o8_3;<;7+O1dTLm2T)wPJAhyPAG2BLN`g*8>@?zadeBSzs$+Jan&N8`|Zi%anwA3!zos zylB;%k&yVVKwmQl+q%4jBaoWCR#tW0QUZw=Te(K_^NYK0Bz`D5r%_ZWyHdm|cn!a- zGzBtfO@`B2FT3w@!wv14D%pX}44HCWFSMF^S%)3gTf48bD{4JbMZ4mR_{rATlGbk1@sjtY*?d){WFt~2pdL$qz@u7i3|>><9^Ccn6Tg*BMd$X1#~{ajj3X(=Kff6Gl-9GKgJHe7TjoAPg#@n^?#wpVK>x@sh>>?7 z-$U=n!T7*?NWa}Ypm^O6HXQ=R(a$fML%7V9K>!}Z2CBTrVdDy+2pKy__#W3 z8v`+nrH^joSPY}-6Wcfy!@^j4bo_mc1Kap~7e2t5)sc76`wkxC?pJ|Zcw!>{0nV

W;oaqr1g*FgfzQNc@q~_A4~oPeP+UxU5Ar5aq-5Tf0>DoanelOMBxUG zQjp6-(bAYmn$o1)Gp4+4cHhKvH(*XAq9;QOYt(1V#O<;4H@9&qhPP?e5}wBkZ16AR z=S$@525pYlIx)Jnek@gK;o%16zzy7diYGS8H*>If(^{?*adTIWJMV z!=QhbR0)C-$$ukup()t|xfk9iV)#B)CrIlB{D4G$#8r&6UgEuk4%PuCy< e{EWWVITyn(`0{tn>mTqc_flNHhBxphnEwOeWEOV- literal 0 HcmV?d00001 diff --git a/target/classes/ru/molokoin/home/servlets/Main.class b/target/classes/ru/molokoin/home/servlets/Main.class index 41ae768c5914092c9d75b19bd75eeee60de7a80d..c541216996bb1034fb76dbdeaea0a35c4cd58145 100644 GIT binary patch delta 30 mcmca8a8ZEc)W2Q(7#J9AH*)B*F>ae|#+JmmZSzdF9gG08*9zVM delta 30 mcmca8a8ZEc)W2Q(7#J9gH*)B*F>ar1#+Jmmee+DV9gG08H44@M diff --git a/target/classes/ru/molokoin/home/servlets/Storage.class b/target/classes/ru/molokoin/home/servlets/Storage.class index 668eb2e2d5f5845fb21e7574577bb2b0a8151861..f835d6406f32e19832887ace4582444756026ed2 100644 GIT binary patch literal 7477 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 literal 4564 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 DTAI$2 diff --git a/target/classes/ru/molokoin/home/util/HardDrive.class b/target/classes/ru/molokoin/home/util/HardDrive.class new file mode 100644 index 0000000000000000000000000000000000000000..381482f84e35c19fe66f4dd1b758a446af13af2d GIT binary patch literal 4662 zcmcIn`&$&(8Ga8e47*GO7DY*vAfn;ctVI(NR!sn<+JKlqu$b*-SVkDxo!QRJqV#H8 zd%xe4G`-o2y`*iTEh08Hy{1jm`@Q|We?y)=eUiRsW_Fo{jq#U059~Q}&UgRb?>px_ z`@+gK0Q>Q;7%EVyAfloQ)dKaWv;{4Z(ahPz*z_qq?Fv-yGfcxhAW+%SIT=L_q6%Uv zYM~0;YUdMKD`U-DhMAbNvU(!#8kxjl&7L`E8wOY zj-eh63gRjnu~DGWV>1maani`>iDQ~O=g^W_oidXh>xDkFeyP)6Dv^d9KPV!MJi6+6%_u-S8ay=-QKad358;O@XGkEo2qu)?+W3G7mF8#)B4 zv|KK;$V8Sma5%8kv#(1{jqf6}{LaaLYP>hpbG7 z@Uv{@p~|(!Wx`uZj0~JA5_&e?q2f;T2`FiwUto9G&UHM2nIXUvmv;-?v}zDl%j_go z?2{EzmCjg>u7Cy6uu61TbLK|1T#O}E8N&bu6%463h(iLZM@0lnR0-4?&OyWWTw~l> zQzxQ$6%H#nqTZEkyAr&dSRv;>?E~vnUj?SQ>gZQyQ6oB=(dxh(VA%*^QnVYI-k|)Xi9f1J(ad*^ptF1 zDaTHyvYKJ0PV3Vw4(^yP>7<1xWs{tWayF;Jko_;}=sC^S2-7&X=4DJX0(%1=3pT%G zPYQ=tDlk=85;E1<`5D7@Vt6BL1&#_A`2sM!dLOWDZIL;uVP$wZ6}YVsfH0QJ=4$|_ zRh*G{QHYnLT9#;jlfV`ar^O~WVwm$|IoYOUuY8LH^IHXa1J{aV5@yLD^u@(h-el*A z8oZq_OE~sIg7I|xV?sZZp5q}S4~QX#p3o(ael(w**6j&xS{6!t#7b+KNzFFocd!_7 z=M4J2edJ{ho}};G1K#1IIJ)c4c9cV(pB^u+taWlma$fCJJ6=B*Xbw^MYlT)X?OtsH zK6g{8-HW+`?THX+iI{!ws;o2g7buZM$1mmXzj%=*uI9WjF{`Xr+X4f|V2| zzwu39<@I^PoidO-q-8SW1}|sz`2L!M%fB15xiMNx@<_U@;%oSNz5H8Qb95GHLw*HI zby57V7Ej@tf*+}P8b4MQlR5{++n!V>t|#5HJ(%O8+qpaR-kiZ`?VR#AgL@(_`6_dfp24V75xeYYno%~gO0=x_7 z_!Y&wF~*g%oNx7ZfXGECPw-oWcsG&qJ(vn8_i*&pT!ONyM!p<@Excqkm#FeBjqx(~ zUfwgMsvpQVCdYfaDxbnl%cxuCUAB7#w*XggYXw%YQ_ec&>=nUm8Mj}--U?R5U8CJs z&@a#7d#bv@P2%NzVwm5 z86TusA0kx~M}P0b#l4Sk?W5d_aOGq81ZNfaBx3j!J{>r9hAYykrm$02v483^?imf) zy1}FBriLDDqejTkb*@re zc=2hOb3gDcP&n@;xb`rBd(nwI_}j<3VJ{yq{ho6&oO1sWJj(FV5PS}gar`|0n-F;c zih?f)@n7^P82AtBo~OA{d=Xy?9C(IY)uf%cih-$k`ZDwpIqSZN*%h1uxUhumahlrg z*`1>cayHs??Lg(7kxh|p=W%n-rbuspm2{_S2@9k+7ojKrUhByKQ#yzi+TV>soDE}? z<2ZdOq-l_qCq0oNoxqoIo@0#rU*VeYeA#-1w>kEb?{ThOVmU5*vn#lYp9Hg?;Timj@_y(2{=xhG6aGTJ7+3#_ JzvG{1{vWRD-0lDX literal 0 HcmV?d00001 diff --git a/target/home.war b/target/home.war index e5f082673fc17b923f38de392901b3acbeba7bd7..79f4ee8d1f7b03770662a4ff0c73d196e912e2f5 100644 GIT binary patch delta 12356 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 delta 5963 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 U#wWNAV7a(W4Z@PQK;6Le4 z=+}1II@p>1fc~gXpG`Ih4I?na-TQK0o^#G~PX77#&EEiKu$4p%9Tws?I?*LCyd!s| zZ=@3_f3Kp9Q#PjNEOE&-F9f9JOC8OK)3s zBZ(dhwvG32j<)@}Q`Hr{t6i@t7&!@?M~c3bfSt>)uFpMQc)2#0UlK@VcjTUQDm3Qg zjPH8enFRU-I-lhir|C2)~{(@K3C0Z6Z zKi2LpjBrq3(5U?|7u8B;n6ddZFcV?8gbyrSw(((zVeE7aK}~xBLp>LQ(4JAA$-k

)O6#iR`l`q}#^-g3ne5HFo?59_ zx0IikTNU1b)32`VzTRC0#iz;NFKu^=+R`X6%CtaD=czMX#bVK&qtde5^Ne>l3uBzf|0D&yY*Vgg#S&gBR9ts z!_GfJeDjF>>edd)o;lh{k%@U(spMRvI1@KHjRpT;FMFQy=PNP@6zliB!01~r$6O!B zY~crip?8Zi&&>dFm4iLT!6CSEv~w5Zo=0)1=;@e{^^Yj%@F=X+S-+t<@@U$9W d4PS3U1XxFo4+%cx`Tqjn@|5K6JG_KM`ad-I5-k7# literal 0 HcmV?d00001 diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Download.class b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Download.class new file mode 100644 index 0000000000000000000000000000000000000000..fbdd1202b60683f3b49a334ffa249aa17bc21d03 GIT binary patch literal 2988 zcma)8YjYdb8Geo|>&VJFapVNN(1h6JV)+vFl2U5nw6^2K0>^eOA!AINuB8)eGPTaF5|)iA7Q=XfdXYzQQtuw6SmE6_EZ zDfJ+U9*LBJeJ}(b@f+Ei=Xjf*?PjZ9O=TOQ?PTXHzjDsEx0FEK_qDIRJcU8HAT7tC-w zDx1`$a75y3w6dK@-mN!6=Bl!4DV)WW7Mm707-^5_<}xMigL4LEabDm6L$KHgcTZ|h zWT^MqI*& zWv}{n$SjgPlh0>L`c%=t)4KY*%Z?W)iItYVW_=c`zIWAHcT@@`tQvS0Yb-FUQYkd* zbzcR6B87qWAncx?H?$qaB)&zB0Rv}kFhvLPZ3C80dm~V8Wm#2hUzJ&4y{$wlSx!TB z0r3GEIpbAG_`tmFs)a^vUHL`LMmG_!Y&j*%xAi*OjE7Y_5I8=6@BYEuNmRTgPnUK{ z^S?VPpKg6o8_3;<;7+O1dTLm2T)wPJAhyPAG2BLN`g*8>@?zadeBSzs$+Jan&N8`|Zi%anwA3!zos zylB;%k&yVVKwmQl+q%4jBaoWCR#tW0QUZw=Te(K_^NYK0Bz`D5r%_ZWyHdm|cn!a- zGzBtfO@`B2FT3w@!wv14D%pX}44HCWFSMF^S%)3gTf48bD{4JbMZ4mR_{rATlGbk1@sjtY*?d){WFt~2pdL$qz@u7i3|>><9^Ccn6Tg*BMd$X1#~{ajj3X(=Kff6Gl-9GKgJHe7TjoAPg#@n^?#wpVK>x@sh>>?7 z-$U=n!T7*?NWa}Ypm^O6HXQ=R(a$fML%7V9K>!}Z2CBTrVdDy+2pKy__#W3 z8v`+nrH^joSPY}-6Wcfy!@^j4bo_mc1Kap~7e2t5)sc76`wkxC?pJ|Zcw!>{0nV

W;oaqr1g*FgfzQNc@q~_A4~oPeP+UxU5Ar5aq-5Tf0>DoanelOMBxUG zQjp6-(bAYmn$o1)Gp4+4cHhKvH(*XAq9;QOYt(1V#O<;4H@9&qhPP?e5}wBkZ16AR z=S$@525pYlIx)Jnek@gK;o%16zzy7diYGS8H*>If(^{?*adTIWJMV z!=QhbR0)C-$$ukup()t|xfk9iV)#B)CrIlB{D4G$#8r&6UgEuk4%PuCy< e{EWWVITyn(`0{tn>mTqc_flNHhBxphnEwOeWEOV- literal 0 HcmV?d00001 diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Main.class b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Main.class index 41ae768c5914092c9d75b19bd75eeee60de7a80d..c541216996bb1034fb76dbdeaea0a35c4cd58145 100644 GIT binary patch delta 30 mcmca8a8ZEc)W2Q(7#J9AH*)B*F>ae|#+JmmZSzdF9gG08*9zVM delta 30 mcmca8a8ZEc)W2Q(7#J9gH*)B*F>ar1#+Jmmee+DV9gG08H44@M diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Storage.class b/target/home/WEB-INF/classes/ru/molokoin/home/servlets/Storage.class index 668eb2e2d5f5845fb21e7574577bb2b0a8151861..f835d6406f32e19832887ace4582444756026ed2 100644 GIT binary patch literal 7477 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 literal 4564 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 DTAI$2 diff --git a/target/home/WEB-INF/classes/ru/molokoin/home/util/HardDrive.class b/target/home/WEB-INF/classes/ru/molokoin/home/util/HardDrive.class new file mode 100644 index 0000000000000000000000000000000000000000..381482f84e35c19fe66f4dd1b758a446af13af2d GIT binary patch literal 4662 zcmcIn`&$&(8Ga8e47*GO7DY*vAfn;ctVI(NR!sn<+JKlqu$b*-SVkDxo!QRJqV#H8 zd%xe4G`-o2y`*iTEh08Hy{1jm`@Q|We?y)=eUiRsW_Fo{jq#U059~Q}&UgRb?>px_ z`@+gK0Q>Q;7%EVyAfloQ)dKaWv;{4Z(ahPz*z_qq?Fv-yGfcxhAW+%SIT=L_q6%Uv zYM~0;YUdMKD`U-DhMAbNvU(!#8kxjl&7L`E8wOY zj-eh63gRjnu~DGWV>1maani`>iDQ~O=g^W_oidXh>xDkFeyP)6Dv^d9KPV!MJi6+6%_u-S8ay=-QKad358;O@XGkEo2qu)?+W3G7mF8#)B4 zv|KK;$V8Sma5%8kv#(1{jqf6}{LaaLYP>hpbG7 z@Uv{@p~|(!Wx`uZj0~JA5_&e?q2f;T2`FiwUto9G&UHM2nIXUvmv;-?v}zDl%j_go z?2{EzmCjg>u7Cy6uu61TbLK|1T#O}E8N&bu6%463h(iLZM@0lnR0-4?&OyWWTw~l> zQzxQ$6%H#nqTZEkyAr&dSRv;>?E~vnUj?SQ>gZQyQ6oB=(dxh(VA%*^QnVYI-k|)Xi9f1J(ad*^ptF1 zDaTHyvYKJ0PV3Vw4(^yP>7<1xWs{tWayF;Jko_;}=sC^S2-7&X=4DJX0(%1=3pT%G zPYQ=tDlk=85;E1<`5D7@Vt6BL1&#_A`2sM!dLOWDZIL;uVP$wZ6}YVsfH0QJ=4$|_ zRh*G{QHYnLT9#;jlfV`ar^O~WVwm$|IoYOUuY8LH^IHXa1J{aV5@yLD^u@(h-el*A z8oZq_OE~sIg7I|xV?sZZp5q}S4~QX#p3o(ael(w**6j&xS{6!t#7b+KNzFFocd!_7 z=M4J2edJ{ho}};G1K#1IIJ)c4c9cV(pB^u+taWlma$fCJJ6=B*Xbw^MYlT)X?OtsH zK6g{8-HW+`?THX+iI{!ws;o2g7buZM$1mmXzj%=*uI9WjF{`Xr+X4f|V2| zzwu39<@I^PoidO-q-8SW1}|sz`2L!M%fB15xiMNx@<_U@;%oSNz5H8Qb95GHLw*HI zby57V7Ej@tf*+}P8b4MQlR5{++n!V>t|#5HJ(%O8+qpaR-kiZ`?VR#AgL@(_`6_dfp24V75xeYYno%~gO0=x_7 z_!Y&wF~*g%oNx7ZfXGECPw-oWcsG&qJ(vn8_i*&pT!ONyM!p<@Excqkm#FeBjqx(~ zUfwgMsvpQVCdYfaDxbnl%cxuCUAB7#w*XggYXw%YQ_ec&>=nUm8Mj}--U?R5U8CJs z&@a#7d#bv@P2%NzVwm5 z86TusA0kx~M}P0b#l4Sk?W5d_aOGq81ZNfaBx3j!J{>r9hAYykrm$02v483^?imf) zy1}FBriLDDqejTkb*@re zc=2hOb3gDcP&n@;xb`rBd(nwI_}j<3VJ{yq{ho6&oO1sWJj(FV5PS}gar`|0n-F;c zih?f)@n7^P82AtBo~OA{d=Xy?9C(IY)uf%cih-$k`ZDwpIqSZN*%h1uxUhumahlrg z*`1>cayHs??Lg(7kxh|p=W%n-rbuspm2{_S2@9k+7ojKrUhByKQ#yzi+TV>soDE}? z<2ZdOq-l_qCq0oNoxqoIo@0#rU*VeYeA#-1w>kEb?{ThOVmU5*vn#lYp9Hg?;Timj@_y(2{=xhG6aGTJ7+3#_ JzvG{1{vWRD-0lDX literal 0 HcmV?d00001 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 964659c..323eda0 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,3 +1,6 @@ ru\molokoin\home\servlets\Storage.class ru\molokoin\home\entities\Media.class +ru\molokoin\home\servlets\Delete.class ru\molokoin\home\servlets\Main.class +ru\molokoin\home\util\HardDrive.class +ru\molokoin\home\servlets\Download.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index f511928..5b6f242 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,3 +1,6 @@ C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Storage.java C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\entities\Media.java +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Download.java +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Delete.java C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\servlets\Main.java +C:\Users\Strannik\Documents\esoe\code\home\src\main\java\ru\molokoin\home\util\HardDrive.java