LINUX.ORG.RU

Сообщения r0ck3r

 

tcp p2p за NAT при помощи внешнего сервера. Реально?

Заинтересовался сабжем. Дабы проверить - написал такой быдлокод, который делает (должен делать) следующее:

1) Сервер ждет соединений на порту 10222

2) Клиент подключается к серверу, узнает порт своего исходящего соединения и поднимает на этом порту свой сервер

3) Сервер пытается установить соединение с IP и портом создавшим это соединение (здесь IP и порт вашего провайдера, который, теоретически, должен нисмотря ни на что ссылаться на ваш внутренний IP и порт, это соединение открывший)

К сожалению, при запуске клиента за NAT получаю Connection Refused

Часть 1 - серверная сторона:

import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;


public class SimpleServer {
    ServerSocket ss;
    
    public void startServer() throws IOException{
        ss = new ServerSocket(10222);
        System.out.println("Сервер запущен по адресу: " + ss.getLocalSocketAddress());
    }
    
    public void stopServer() throws IOException{
        ss.close();
    }
    
    public void waitConnection() throws IOException, InterruptedException{
            Socket s = ss.accept();
            
            int remotePort = s.getPort();
            InetAddress host = s.getInetAddress();

            System.out.println("Пытаюсь установить соедиение с " + host.getHostAddress() + " на порт: " + remotePort);
            
            //попытка установления соединения с клиентом, который в этот момент ожидает соединения
            Thread.sleep(1000);
            Socket socket = new Socket(host, remotePort);
            System.out.println("Соединение установлено, отправляем тестовые данные");
            
            //Отправка данных
            OutputStream os = socket.getOutputStream();
            os.write("Hello, client!".getBytes());
            
            s.close();

    }
    
    public static void main(String[] args) throws InterruptedException, IOException{
        SimpleServer ss = new SimpleServer();
        ss.startServer();
        ss.waitConnection();
        ss.stopServer();
    }
}

Часть 2 - сторона клиента:

import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleClient implements Runnable{
    SimpleClient(){}
    
    //
    SimpleClient(Socket socket){
        this.socket = socket;
        Thread t = new Thread(this);
        t.start();
    }
    Socket socket;
    
    String server = "192.168.10.10";
    int port;
    public void connect(){
        try {
            //Подключаемся к серверу
            Socket socket = new Socket(server, 10222);
            port = socket.getLocalPort();
            
            System.out.println("Обнаружен локальный порт: " + port);
            socket.setReuseAddress(true);
            
            //Создаем свой сервер на порту, использованному при исходящем соединении
            ServerSocket serverSocket = new ServerSocket(port);
            
            //Ждем соединений с созданного сервера
            while(true){
                System.out.println("Ожидание соединения на порту: " + port);
                Socket gotSocket = serverSocket.accept();
                System.out.println("Получено соединение");
                new SimpleClient(gotSocket); //Запустить поток, который будет читать сокет
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    //Чтение данных из сокета
    @Override
    public void run() {
        try {
            InputStream is = socket.getInputStream();
            int c;
            while( (c = is.read()) != -1 ){
                System.out.print((char) c);
            }
        } catch (IOException e) {
            System.err.println("Ошибка ввода вывода");
        }
    }
    
    public static void main(String[] args){
        new SimpleClient().connect();
    }
}

 , , ,

r0ck3r
()

Восстановление таблицы разделов с флеш-накопителя

Здравствуй, ЛОР!

Есть флешка с, предположительно, убитой таблицей разделов. Я снял образ через dd и подцепив его через losetup попытался прогнать по нему TestDisk и gpart, но безрезультатно.

Флешка не моя, а моей матери. Она жаловалась, что ее телефон (китайфон с Android 4.4) стал адски глючить: то приложения закрываются с ошибкой, то зависает намертво, то батарейку не видит, то сим-карту. Я предполагаю, что причиной такого поведения может быть мертвая ОЗУ, которая, в свою очередь, и послужила причиной смерти ФС

Каким еще софтом попробовать выкорчевать данные?

 , , , ,

r0ck3r
()

Возможно тупой вопрос по обобщениям в Java

Учу понемногу Java и напоролся на такое:

public class Main {
    public static class MyTestClass<T>{
        private T[] myAr;
        private int curItem=0;
        private int count=10;

        MyTestClass(){
            myAr = (T[]) new Object[count]; //Этот код работает
            for(int i=0; i<myAr.length; i++){
                myAr[i] = (T) new Object(); //Этот код работает
            }
        }

        void set(T value){
            if(curItem<count) {
                myAr[curItem++] = value;
            }
        }

        T get(int index){
            return myAr[index];
        }
    }

    public static void main(String[] args){
        MyTestClass<Integer> myTestClass = new MyTestClass<Integer>();
        myTestClass.set(12);
        System.out.println(myTestClass.get(0));

        String[] str = (String[]) new Object[10]; //Этот код не работает, хотя, как мне кажется, делает тоже самое
    }

}

Внимание, вопрос!

myAr = (T[]) new Object[count];
...
myAr[i] = (T) new Object();

Почему это работает? Почему он может скастовать Object до дочерних классов внутри обобщенных классов? хотя при явном указании типов как здесь:

 String[] str = (String[]) new Object[10];
возникает Exception in thread «main» java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

 , ,

r0ck3r
()

История о ненависти к Canon или как я стал ССЗБ

Заказал я на OZON.RU принтер Canon PIXMA G3400 Принтер пришел - я его подключил к своей Wi-Fi сети через телефон, напечатал с него фоточки - красота! Но, как оказалось, драйверов для этого принтера для Linux НЕТ, хотя для всех предыдущих принтеров Canon, которыми мне приходилось пользоваться - даже для самых старых - Canon S200 (принтер 2003 года) с дровами проблем не было (собственно в связи с этим и не думал проверять перед покупкой наличие драйверов под Linux). На официальном сайте драйвера только для Windows и Mac OS X. Казалось бы, есть драйвер для Mac OS - выложите и для Linux - и там и там используется CUPS и дрова ПОЧТИ идентичные Я написал в тех. поддержку с вопросом о плане выхода дров под Linux на что мне ответили, что не планируем и выслали ссылку на комплект разработчика для Linux - пиши дрова сам! Я не отчаялся и решил подключить принтер к Google Cloud Print и подключить его в CUPS - подключил - все хорошо, но через некоторое время принтер без ведомых причин перешел в состояние offline в Google Print, при этом в локальной сети он есть, его веб-интерфейс загружается. Перезагрузив принтер он перешел в состояние online, но через некоторое время опять offline. Написав об этом в тех. поддержку - ответа НЕ ПОЛУЧИЛ. При этом в Google нашел много жалоб на уход в offline разных моделей принтеров Canon. Теперь сижу: могу пользоваться принтером только с телефона и планшета

 , ,

r0ck3r
()

Прошу замолвить слово за Power over Ethernet

Хочу прикупить такую штуку для своего роутера, дабы запихнуть его в такие закрома, где розеток нет, а курочить провод питания желания нет, во имя всемирного равновесия и сохранения первозданного вида устройства. Планируемая дистанция передачи питания по ethernet ~10-15м, к роутеру также подключен HDD. Питается от 12 в.

Вопрос: будет ли это работать?

Линукс при том, что на роутере установлена OpenWRT и обслуживает роутер только девайсы с ядром линукс (1xPC, 1xNotebook, 1xTV, 3xAndroid)

 , , ,

r0ck3r
()

Можно ли узнать как включили компьютер?

Здравствуй ЛОР!

Есть ли возможность прочитать метод включения компьютера? То есть был он включен кнопкой, по Wake-On-Lan, либо AC-Back?

Очень нужно, ибо моя материнская плата не умеет в Wake-On-Lan после сбоя питания. Вот так.

 , ,

r0ck3r
()

Как они это делают?

http://lenta.ru/news/2015/09/10/navalnyyoutube/

Информацию о внесении ряда страниц YouTube подтвердил в интервью «Ведомостям» пресс-секретарь Роскомнадзора Вадим Ампелонский. «Есть более двух десятков роликов на YouTube, которые признаны экстремистскими и блокируются на основании требования Генеральной прокуратуры. Пул IP-адресов, который использует YouTube, позволяет ограничить доступ к противоправному контенту точечно», — сообщил он.

Собственно вопрос: как? Там же https

 ,

r0ck3r
()

HTTPS now everywhere

Здравствуй, ЛОР!

В связи с наметившимся отказом производителей браузеров от HTTP в пользу HTTPS у меня родился вопрос.

Есть сервер, на котором крутится сайт с несколькими доменами. Сейчас домена 3, но это число будет расти и постепенно достигнет ~30. Каждый домен - отдельный сайт.

На каждом домене имеется по несколько поддоменов, являющиеся сайтами дочерних организаций. Каждая дочерняя организация может по желанию привязать свой домен и сайт этой организации станет доступен по поддомену основного домена и по привязанному домену.

Все работает без Apache VirtualHost и находится в одном DocumentRoot. Все это дело обрабатывает некоторый единый для всех доменов и поддоменов самописный движок, который определяет какой домен/поддомен запрошен и выполняет соответствующие этому домену действия.

Внимаение вопрос: как к этому добру прикрутить HTTPS?

 , , ,

r0ck3r
()

Counter-Strike GO доступна!

Пока не закачал, но в библиотеке доступна:
http://i66.fastpic.ru/big/2014/0923/10/b978ddd20f2a37d97c1a51b64f2cb410.png

r0ck3r
()

Безопасность безопасности

Я храню на своем ноутбуке свои интим фоточки. Мой старший брат хочет получить к ним доступ, чтобы меня шантажировать тем, что расскажет все моей маме.
Предположим, что для пущей секурности я шифровал корень, но тогда grub2 просится вынести его раздел подальше от шифрования.
Внимание вопрос: Какова вероятность того, что мой старший брат проникнет ночью в мою комнату и изменит initramfs таким образом, что cryptsetup сохранит мой пароль куда-нибудь на HDD?

 , , ,

r0ck3r
()

Dead Island теперь скоро в Linux

Инфа взята тут: http://steamdb.info/depot/91319/
Подробности об игре тут: http://store.steampowered.com/app/91310/

r0ck3r
()

Fail > Success story

В общем недавно случилась такая беда, что сгорела моя затычка GeForce GT 440, на которой я комфортно играл в Metro Last Light, L4D 2 и ждал выхода The Witcher 2.
А случилось это так: в один прекрасный день система не загрузилась. Точнее загрузилась, но ни на одном из двух мониторов изображение не появилось. Я, расстроившись, вынул затычку и завелся на встроенном Intel, на котором тормозит даже CS:Source.
Спустя некоторое время пришла идея включить в биос встроенную видюху как основную и поставить затычку на место, дабы увидеть выхлоп lspci.
Система загрузилась, а в выхлопе я увидел строчку:

01:00.0 VGA compatible controller: NVIDIA Corporation GF108 [GeForce GT 440] (rev a1)
и решил попробовать погуглить про bumblebee. Перейдя по ссылке на федоравики про bumblebee я проделал описанное и, вуаля, игрушки забегали почти как раньше (жаль второй монитор воткнуть некуда)
В триальной Windows 8.1, которую я поставил, чтобы иногда поиграть в f1 2013 codemasters и Battlefield Bad Company 2 NVIDIA работать не захотела, хотя видна в диспетчере. Не пускает в панель управления - быть может делал что-то не так. Но не проблема - если припрет попробую замутить KVM с пробросом карточки - может быть заработает

 , ,

r0ck3r
()

Тред детектор школоты

а кто помнит чем это стреляло?)) http://www.adme.ru/vdohnovenie-919705/chem-razvlekalis-deti-v-sssr-635855/635...

 ,

r0ck3r
()

Провайдеры и законодательство РФ

Имеет ли право провайдер требовать деньги, если услуг доступа к сети Интернет он не предоставлял? То есть я не оплатил Интернет в феврале и доступ, соответственно, был закрыт. Политика у провайдера такая, что для того чтобы включить Интернет в марте, я должен буду оплатить долг за февраль. Законны ли такие требования?

 , ,

r0ck3r
()

NetworkManager не dhclient'ит

Fedora 20, откатил иксы до 1.11 и собрал ядро 3.2.55 с патчами BFQ. Нужно было для того чтобы завести catalyst-legacy и играть в Counter-Strike по сети. Возникла странная проблема: Network-Manager почему-то перестал присваивать IP для сети, хотя cat /var/log/messages | grep dhclient :

Feb 22 14:56:54 localhost NetworkManager[681]: <info> dhclient started with pid 901
Feb 22 14:56:54 localhost dhclient[901]: Internet Systems Consortium DHCP Client 4.2.6
Feb 22 14:56:54 localhost dhclient[901]: Copyright 2004-2014 Internet Systems Consortium.
Feb 22 14:56:54 localhost dhclient[901]: All rights reserved.
Feb 22 14:56:54 localhost dhclient[901]: For info, please visit https://www.isc.org/software/dhcp/
Feb 22 14:56:54 localhost dhclient[901]: 
Feb 22 14:56:54 localhost dhclient[901]: Listening on LPF/wlo1/00:26:82:d6:a1:56
Feb 22 14:56:54 localhost dhclient[901]: Sending on   LPF/wlo1/00:26:82:d6:a1:56
Feb 22 14:56:54 localhost dhclient[901]: Sending on   Socket/fallback
Feb 22 14:56:54 localhost dhclient[901]: DHCPDISCOVER on wlo1 to 255.255.255.255 port 67 interval 8 (xid=0x3569f9e8)
Feb 22 14:56:54 localhost dhclient[901]: DHCPREQUEST on wlo1 to 255.255.255.255 port 67 (xid=0x3569f9e8)
Feb 22 14:56:54 localhost dhclient[901]: DHCPOFFER from 192.168.1.1
Feb 22 14:56:55 localhost dhclient[901]: DHCPACK from 192.168.1.1 (xid=0x3569f9e8)
Feb 22 14:56:55 localhost dhclient[901]: bound to 192.168.1.36 -- renewal in 364066 seconds.

то есть, из логов видно что ip как-бы получен.
а если я выполню вручную «dhclient -1» то IP успешно присваиваются

 , ,

r0ck3r
()

Crysys будет на Linux?

http://steamdb.info/app/220980/

Crytek SDK - это я правильно понял?

r0ck3r
()

патч BFQ

А где собственно скачать сабж? Первая ссылка в гугле битая уже второй день...

r0ck3r
()

BIOS и UEFI

ОС на флешке, можно ли сделать так, чтоб она грузилось на обычных биос и на UEFI без legacy boot? Вопрос скорее гипотетический, так как компов с UEFI не имею, хотя ссылки и руководства приветствуюся

r0ck3r
()

Есть ли истории успеха использования zram?

Написал такой скрипт:

#!/bin/bash
use_part=3
use_part_of=4

NUMCPU=`ls -1 -d /dev/cpu/? | wc -l`
RAM=$((`cat /proc/meminfo | grep MemTotal | sed 's% %%g' | sed 's%kB%%g' | cut -d':' -f2`/1024))
ZRAM=$(($RAM/$use_part_of*$use_part))
ZRAM_DEV_SIZE=$(($ZRAM/$NUMCPU))
echo "RAM: 				$RAM MB"
echo "Total size of zram:		$ZRAM MB"
echo "Num of zram devices: 		$NUMCPU"
echo "Size of each zram device:	$ZRAM_DEV_SIZE MB"

modprobe zram zram_num_devices=$NUMCPU

ls -1 -d /sys/block/zram* |
while read i
do
      echo $(($ZRAM_DEV_SIZE*1024*1024)) > $i/disksize
done

ls -1 -d /dev/zram* |
while read n
do
      mkswap $n
      swapon $n -p 10 -d
done

имею одноядерник AMD с 2 гигами ОЗУ на системе Fedora 19 с самосборными ядрами 3.2.49 и 3.2.50 Почему-то при использовании swap ~200mb получаю полное зависание системы, независимо от того имеется физический swap или нет. В /var/log/messages ничего не сыпется

r0ck3r
()

Троян для Linux продан за 2000 долларов

http://nvworld.ru/news/trojan-for-linux-sold-out-for-2k-bucks/

Для Ъ: кто-то написал и продал вирус для онтопика, с ручной установкой

P.S. теперь и нам нужен антивирус касперского

r0ck3r
()

RSS подписка на новые темы