LINUX.ORG.RU

AFS Proxy 1.0

 afs proxy,


0

1

Вышла первая пригодная для практического использования версия AFS Proxy 1.0.

AFS Proxy — oбратный прокси-сервер (англ. reverse proxy), минималистичная opensource-альтернатива закрытой программе ngrok. Программа может использоваться для доступа извне к любому TCP-сервису, находящемуся в частой сети за NAT. Вам нужно иметь собственный сервер с белым IP или же самый слабый облачный VPS/VDS. AFS Proxy не использует и не изменяет содержимое передаваемых сетевых пакетов. Язык разработки — Java.

>>> Подробности



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)

минималистичная open source альтернатива закрытой программе ngrok.

Язык разработки – Java.

Страшно подумать на чем написан : ngrok.

mx__ ★★★★★
()

Язык разработки — Java.

IMHO, не самый лучший выбор. В частности:

самый слабый облачный VPS/VDS

Жаба всегда отжирает гигабайты памяти, сомневаюсь, что оно пойдёт на самом слабом VPS/VDS.

emorozov
()
Ответ на: комментарий от mx__

Страшно подумать на чем написан : ngrok.

Код-то может и на Java, но вот стиль от C# (фигурные скобки на новой строке)... Закомментированные oneliner'ы, обработка ошибок через System.out.println (вместо какого-нибудь логгера), «съедание» исключений через простой return... В Util самопальный парсер JSON (чем это лучше, чем Jackson или GSON???)

while (1 == 1)

Хм...

В общем, как-то печально...

Edit: ну и компиляция через bash, вместо Maven/Gradle... :(

X-Pilot ★★★★★
()
Последнее исправление: X-Pilot (всего исправлений: 1)
Ответ на: комментарий от X-Pilot

но вот стиль от C# (фигурные скобки на новой строке)

Какое это имеет отношение к языку? Как по мне это единственный вменяемый способ писать код на любом языке со «скобочками». чтобы открывающая и закрывающая скобки были всегда на одном уровне.

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 2)
Ответ на: комментарий от emorozov

Заглянул в код… Там ещё и пишется JSON через .writeln и конкатенацию строк…

Помнится мне рубисты рассказывали что у них это самый быстрый способ генерации. Если пользоваться либами, то производительность сильно падала. Возможно у жаберов та-же фигня?

Q-Master
()
Ответ на: комментарий от Q-Master

В этом месте скорость явно не нужна. К тому же, оно настолько убого выглядит, что просто капец.

Ну и если про запись можно спорить, то уж чтение самописным парсером точно вряд ли обгонит профессиональные разработки.

emorozov
()
Ответ на: комментарий от mx__

Когда в таком контексте пишут про минималистичность, то чаще всего имеют в виду не легковесность, а возможности.

Loki13 ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Как по мне это единственный вменяемый способ писать код на любом языке со «скобочками». чтобы открывающая и закрывающая скобки были всегда на одном уровне.

В Java есть «Java Code Conventions», который был написан еще Sun'ом и большая часть публично доступного кода старается ему следовать (Google'овский «Google Java Style Guide», я так понимаю, в плане скобок для многострочных методов ничем не отличается). И нет, я не соглашусь по поводу «единственный вменяемый способ»: «египетские скобки» (когда открывающая в конце строки, а закрывающая - на другой) помогают экономить вертикальное пространство. Ты видишь, что есть закрывающая скобка и код отбит отступом - значит все, что выше относится к методу, чья сигнатура перекрывает отбивку кода (ну и наоборот: если есть сигнатура и отбивка кода под ней, значит тело метода закончится закрывающей фигурной скобкой).

X-Pilot ★★★★★
()
Ответ на: комментарий от X-Pilot

помогают экономить вертикальное пространство

Так не пишите по 1.5к строк в одном файле и экономить ничего не придется.

ritsufag ★★★★★
()
Ответ на: комментарий от ritsufag

Так не пишите по 1.5к строк в одном файле и экономить ничего не придется.

Компактный код всё равно проще читается, чем размазня на полэкрана.

emorozov
()

В java нет getopt_long(3) ?

if (args.equals ("-h") ...

pascal ★★★
()
Последнее исправление: pascal (всего исправлений: 1)
Ответ на: комментарий от emorozov

Вот только это решается сахарком, где от скобочек избавляются там где это не нужно, а не экономией на переносах строк.

В контексте разговора про жаву смешно слышать про такой способ «экономии».

ritsufag ★★★★★
()
Ответ на: комментарий от X-Pilot

помогают экономить вертикальное пространство

Не имеет смысла в мире, где код почти никогда не распечатывают на бумаге.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Не имеет смысла в мире, где код почти никогда не распечатывают на бумаге.

Имеет, потому что, чем больше контекста вмещается на экране без скроллинга, тем проще работать с кодом.

emorozov
()
Ответ на: комментарий от X-Pilot

Java Code Conventions

Примерно то же самое что и PEP8 в питоне. Это не более чем рекомендация. Стиль, принятый в конкретном проекте всегда стоит в приоритете.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Почему без?

Потому что изменяя конкретное место в данный момент, всегда видишь широкий контекст, меньше приходится держать контекста в оперативной памяти мозга.

emorozov
()
Ответ на: комментарий от eternal_sorrow

Примерно то же самое что и PEP8 в питоне. Это не более чем рекомендация. Стиль, принятый в конкретном проекте всегда стоит в приоритете.

В Python любой стиль обычно надмножество PEP-8. То есть, PEP-8 - необходимый минимум. Потому что он уже используется везде, в каждой батарейке, каждой утилите, и гораздо удобнее, когда не приходится в голове переключаться со стиля на стиль.

Поэтому, большинство стилей любой компании не противоречат PEP-8, а начинаются с него.

emorozov
()

Без шифрования оно нафиг не нужно, да и UDP бы не помешал.

KillTheCat ★★★★★
()
Ответ на: комментарий от Anoxemian

Реверс-трансляция же, не? Ты с компа за NAT-ом коннектишься на сервер(с белым IP), указывая на какой порт тебе пробрасывать трафик, сервер выделяет тебе порт и пробрасывает с него трафик по вот этому TCP-соединению тебе.

Но лабать такое на Java и заявлять что оно для слабых машин - это верх упоротости.

Лучше смотреть в сторону sish

Pinkbyte ★★★★★
()
  1. только tcp

  2. первая пригодная для практического использования версия

  3. Язык разработки — Java.

Резюме. Убогая реализация подмножества того, что уже давным давно сделано и что даже делать-то в норме не надо, ибо достаточно dnat или dnat+snat.

Остался вопрос, а что делает ngrok? Такая же бессмыслица или там есть какие-то полезные функции?

PS

Прошу прощения, если не прав. Все написано по тексту новости.

AVL2 ★★★★★
()
Ответ на: комментарий от Pinkbyte

SSH can normally forward local and remote ports. This service implements an SSH server that only handles forwarding and nothing else.

Фигня же, тот же тормозной ssh. Зачем он когда можно пробросить просто через ssh? Да и всегда лучше поднять wg (+ nginx proxy), если есть такая возможность.

Но вот если автор перепишет все на go, прикрутит шифрование, udp и все будет хорошо и быстро работать, то будет пушка.

KillTheCat ★★★★★
()
Ответ на: комментарий от X-Pilot

В Util самопальный парсер JSON (чем это лучше, чем Jackson или GSON???)

«Самопальный» парсер это норм, но меня вот намного больше интересует, зачем json проксе.

firkax ★★★★★
()
Ответ на: комментарий от Q-Master

Это у всех самый быстрый способ генерации.

firkax ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Это ведёт к захламлению экрана бесполезными пустыми строками. Никогда так не делал, и это наверно то, что больше всего раздражает в чужом форматировании.

firkax ★★★★★
()
Ответ на: комментарий от KillTheCat

Но вот если автор перепишет все на go

Лучше уж джава.

firkax ★★★★★
()
Ответ на: комментарий от Pinkbyte

Вот это классная штука, только шифрования и нехватает.

KillTheCat ★★★★★
()
Ответ на: комментарий от firkax

«Самопальный» парсер это норм, но меня вот намного больше интересует, зачем json проксе.

Сомневаюсь, что норм, особенно в том виде, в котором я его увидел в коде. Впрочем, я на жабе сто лет не писал, если это считается нормой, то рад, что сто лет не писал, и ещё сто, надеюсь, не прикоснусь.

Там ещё есть самописный алгоритм backoff, который удивляет меня не меньше.

emorozov
()

Пара вопросов.

  1. В чём отличие от xinetd redirect?

  2. Может ли пробросить активное FTP соединение?

qwe ★★★
()
Ответ на: комментарий от Pinkbyte

Но лабать такое на Java и заявлять что оно для слабых машин - это верх упоротости.

Пользуюсь этим на VPS с минимальным тарифом (c одним виртуальным ядром с 1Gb ОЗУ) OS Ubuntu server. Нет там потребления гагабайты, как пишут, т.к. гигабайтов в тарифе нет :)

rimsleur
() автор топика
Ответ на: комментарий от AVL2

Остался вопрос, а что делает ngrok? Такая же бессмыслица или там есть какие-то полезные функции?

ngrok предоставляет внешний IP из своих серверов, а тут нужно/можно покупать отдельный VPS

rimsleur
() автор топика
Ответ на: комментарий от emorozov

Пара строчек это настолько малая разница, то значения особо не имеет.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от emorozov

большинство стилей любой компании не противоречат PEP-8

Да с чего бы?

eternal_sorrow ★★★★★
()
Ответ на: комментарий от qwe

В чём отличие от xinetd redirect?

это хз

Может ли пробросить активное FTP соединение?

Не совсем понял что значит активное, но вообще да, FTP, SSH, любое TCP-соединение.

rimsleur
() автор топика
Ответ на: комментарий от eternal_sorrow

Тут пара, там пара, в итоге плохо отформатированный код от хорошо отформатированного занимает раза в 2-3 больше вертикального места. А иногда и в 4-5. Это, конечно, уже не только из-за расположения скобок, но скобки тут задают направление. Как пример:

  for(i=0; i<10; i++) /* для вложенного блока нужна скобка */
  { /* отделим скобку на отдельную строку */
    for(j=0; j<10; j++) /* для вложенного блока нужна скобка */
    { /* отделим скобку на отдельную строку */
      q[i][j] = i*j;
    }
  }
  /* там ниже будет ещё один такой же "большой" блок кода, надо разделить пустой строкой для наглядности */
А как было надо:
  for(i=0; i<10; i++) for(j=0; j<10; j++) q[i][j] = i*j;
Разница в 8 раз. Из 8 строк две - из-за переносов скобок на следующую строку.

firkax ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Ну, вобщем-то я в твой код не лезу, делай как хочешь. Своё мнение я высказал, твоё услышал, взаимного согласия кажется не ожидается.

firkax ★★★★★
()
Ответ на: комментарий от eternal_sorrow

единственный вменяемый способ писать код на любом языке со «скобочками»

Единственный вмеяемый способ писать код на любом языке со скобочками - так как принято именно в этом языке со скобочками. Или хотя бы в проекте.

Gentooshnik ★★★★★
()
Ответ на: комментарий от i3draven

Даже если вдруг про гигабайты памяти вдруг неверно (хотя, сколько себя помню, жаба всегда по потреблению памяти обгоняла все интерпретаторы, которые видел), то достаточно открыть код по ссылке «Подробности».

Там выше я и комментаторы обращали внимание на некоторые его особенности.

В общем и целом: код плохой, даже на первый взгляд. Некрасивый, непонятный, даже форматирование выглядит сделаным не просто странным, а от балды, бессистемно.

Точно так же бессистемно сделан вывод и парсинг жсон (даже если не касаться необходимости вообще в 2022 году делать это вручную, в утилите, где это однозначно не является узким местом), и несколько других мест.

Если утилита выкладывалась, чтобы помочь другим людям, то ей недостает документации и примеров. Да и жаба, всё-таки, серьёзный барьер к использованию. Я бы не хотел свой небольшой VPS захламлять гигантскими жабными окружениями ради одной утилиты.

Если как пример для, скажем, потенциальных работодателей: «смотрите как я могу писать код на Java», то это, скорее, антиреклама, т.к. я, даже не будучи профи в Java, могу разнести почти каждую строку в этом проекте в пух и прах. И за дело, притом.

emorozov
()
Последнее исправление: emorozov (всего исправлений: 1)
Ответ на: комментарий от Gentooshnik

так как принято именно в этом языке со скобочками.

Нет. Миллионы мух иногда ошибаются.

Или хотя бы в проекте.

Да.

eternal_sorrow ★★★★★
()

Ну что сказать. Глядя на такое я бы кандидата на работу точно не взял.

  1. Выучи мавен и градл. Без этого никак.
  2. Выучи кор. Код отвратителен во всем.
  3. Выучи канкаренси. Попытки в многопоток отвратительны.
  4. Кодстайл нужно соблюдать. То что я увидел больше похоже на поделие на сях. Учи и соблюдай конвенцию. ПР в таком отвратительном стиле обычно реджектят автоматом.

В алгоритмы не заглядовал.

Автору - жява это не си. И с сишными привычками в жявамирок не лезут. Учи жяву и писать на жяве.

guyvernk
()

Наверное полезная штука. Пинг не увеличивает? Я так понимаю, UDP не работает?

goingUp ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.