Фаервол в CentOS 7
https://bozza.ru/art-259.html 1. Disable the Firewall: To disable firewalld service please run the following command. sudo systemctl disable firewalld 2. Enable the Firewall: If you want to enable the service please run the command. systemctl enable 3. Stop the Firewall: You can also deactivate the service using the following command systemctl stop firewalld 4. Start the Firewall: To activate the command run systemctl start firewalld работает ли фаервол firewall-cmd —state смотрим что разрешено firewall-cmd —permanent —list-all Убираем разрешающее правило для ip6: firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client Разрешим соединение на порт 2234/tcp: firewall-cmd —permanent —zone=public —add-port=2234/tcp Перезагрузим правила: firewall-cmd —reload Ещё примеры: firewall-cmd —permanent —zone=public —remove-service=dhcpv6-client firewall-cmd —permanent —zone=public —remove-service=mysql firewall-cmd —permanent —zone=public —remove-port=80/tcp firewall-cmd —permanent —zone=public —add-service=http firewall-cmd —permanent —zone=public —add-port=3306/tcp
Web-сервер Nginx — пошагово
В этой инструкции пошагово разберём установку и настройку LEMP — стека для организации web-сервера на системе CentOS 7. Будет сделано: первоначальная настройка CentOS установка и конфигурирование Nginx + php-fpm установка и настройка MariaDB установка PHP создание двух тестовых сайтов, установка WordPress автоматический Backup баз данных поддержка HTTPS с помощью Let’s Encrypt Итак, мы находимся в только что установленном CentOS: Выполняем обновление системы: sudo yum clean all sudo yum update sudo yum autoremove Устанавливаем текстовый редактор nano, файловый менеджер mc и инструменты для работы с сетью, программу для скачивания: sudo yum install mc nano net-tools wget -y Назначение имени компа: sudo nano /etc/sysconfig/network 1HOSTNAME=_имя_компьютера_ sudo hostnamectl set-hostname _имя_компьютера_ Назначение статического IP: с помощью программулины: sudo nmtui либо в рукопашку: sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 123456789BOOTPROTO="none" IPADDR="192.168.2.203" GATEWAY="192.168.2.254" DNS1="192.168.2.254" DNS2="8.8.8.8" # Disable ipv6 # IPV6INIT="no" # Subnet # PREFIX=24 Перезапуск сети: sudo systemctl restart network Настройка времени: Написано здесь Редактируем правила фаервола: Смотрим работает ли…
Настройка VLAN на HP 1920 24G и Hyper-V
В этой заметке описываю создание обособленной виртуальной частной сети (VLAN) от шлюза до виртуальной машины в гипервизоре MS Hyper-V. Общая схема выглядит так: Цифрами обозначены физические порты различных устройств. Конечная точка — виртуальная машина в гипервизоре Hyper-V с операционной системой CentOS 7 и поднятым на ней Web-сервером Nginx. Весь путь от АПКШ Континент до него должен быть полностью изолирован от локальной сети. Эта задача решается с применением VLAN на управляемых коммутаторах и в гипервизоре. Локальная сеть начинается с порта номер 5. АПКШ Континент — это аппаратный криптошлюз, управляемый из центра обработки данных из другого города — я не имею доступа к его конфигурации. На входе он получает интернет, а на выходе он отдаёт интернет + частную сеть вышестоящей организации. Изначально я просил просто пробросить порты 80, 443 и 9950 на pfSense, но безопасник ЦОДа категорически отказался это делать, и вместо этого сделал проброс данных портов на адрес виртуальной машины, из…
Openfire увеличить объем памяти для Java
Спустя год бесперебойной работы openfire начал вылетать с ошибкой OutOfMemory. В web-интерфейсе напротив Использовано java — частенько не оставалось свободной памяти. Решение: размер выделенной памяти увеличивается следующим способом: В файле /opt/openfire/bin/openfire нужно раскомментировать строчку INSTALL4J_ADD_VM_PARAMS= и присвоить ей значение, например, «-Xms128m -Xmx330m -Xss128k -Xoss128k -XX:ThreadStackSize=128» Таким образом, мы установили начальное выделение памяти 128 Мб (-Xms128m), максимальное — 330Мб (-Xmx330m). По поводу остальных параметров я особо не разбирался и думаю что их не стоит увеличивать Результат: P.S.: Здесь ещё что-то написано: https://community.igniterealtime.org/docs/DOC-1033
Определить, содержит ли переданный объект определенный метод
12345678910111213141516171819202122232425import java.lang.reflect.Method; public class test { public static class Cat{ void say(String word){ System.out.println("Cat says: " + word); } } public static void main(String[] args) { Cat cat = new Cat(); cat.say("hello"); System.out.println(isHasMethod(cat, "say")); } static boolean isHasMethod(Object object, String methodName){ Method[] methods = object.getClass().getDeclaredMethods(); for (Method method : methods) { if (method.getName().equals(methodName)) return true; } return false; } }
Как отправить email из программы Java
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class test { public static void main(String[] args) { //Отправить E-Mail //Скачать javamail api (javax.mail.jar) отсюда http://www.oracle.com/technetwork/java/javamail/index.html //В Intellij IDEA в меню File->Project Structure…->Libraries нажать плюсик и добавить этот файл к проекту //Тто же самое сделать для JAF (activation.jar): http://www.oracle.com/technetwork/java/javase/jaf-136260.html //Если что-нибудь не получается, возможно сам почтовик блокирует авторизацию через ненадёжные приложения. (так по-умалчанию делает gmail.com и это отключается в личном кабинета) final String username = "SOURCE@mail.ru"; final String password = "SOURCE_PASSWORD"; Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.host", "smtp.mail.ru"); props.put("mail.smtp.port", "587"); Session session = Session.getInstance(props,…
Как отсортировать список строк в обратном алфавитном порядке
1234567891011121314151617import java.util.Arrays; import java.util.Comparator; public class test { static class MyComparator implements Comparator<String> { public int compare(String strA, String strB) { return strB.compareTo(strA); } } public static void main(String[] args) { String[] mass = new String[]{"hello", "world", "any_shit", "my_word"}; MyComparator rsc = new MyComparator(); Arrays.sort(mass, rsc); System.out.println(Arrays.toString(mass)); } }
Правила сериализации
При сериализации автоматически не сериализуются: — transient переменные — static переменные — унаследованные переменные (они будут инициализированы с помощью конструктора родительского класса без параметров). Все это можно разными способами сериализовать врукопашную (externalizable). Для сериализации объектов внутренних нестатических классов, внешние классы должны быть сериализуемыми. Да, чтобы немного дополнить алгоритм стандартной сериализации/десериализации, используют два метода: 1234567891011121314151617181920public class B extends A implements Serializable { private String nameB; private void writeObject(ObjectOutputStream oos) throws Exception{ oos.defaultWriteObject(); oos.writeObject(nameA); } private void readObject(ObjectInputStream ois) throws Exception{ ois.defaultReadObject(); nameA = (String) ois.readObject(); } public B(String nameA, String nameB) { super(nameA); …
Получить имя пакета класса
1MyClass.class.getPackage().getName()
Получение всех методов класса и их выполнение
1234567Class c = person.getClass(); Method[] methods = c.getDeclaredMethods(); //Получаем массив объявленных методов класса person try { methods[0].invoke(person, null); //Выполняем первый попавшийся метод } catch (IllegalAccessException | InvocationTargetException e) { e.printStackTrace(); } Более подробно расписано здесь (http://java-online.ru/java-reflection.xhtml). Вызов метода с параметрами: 12345Class aclass = obj.getClass(); Class[] paramTypes = new Class[] { String.class, int.class }; Method method = aclass.getMethod("getCalculateRating", paramTypes); Object[] args = new Object[] { new String("First Calculate"), new Integer(10) }; Double d = (Double) method.invoke(obj, args); Метод invoke принимает два параметра : первый — это объект, класс которого объявляет или наследует данный метод, а второй — массив значений параметров, которые передаются вызываемому методу.