Giter VIP home page Giter VIP logo

etherterm's Introduction

You can follow the latest updates and work in the following branches:

  • master - current release branch at 0.4.11-alpha

Screenshot

EtherTerm is a portable terminal emulator and telnet/ssh client for Windows Linux, BSD, Arm and OSX. It differs from standard terminal emulators such as xterm and PuTTY by providing a common telnet and ssh protocol across platforms, with particular focus on font sets appropriate for connecting to BBS servers using cp437, and Amiga art. UTF-8 Font glyphs are planned for the future.

EtherTerm is comparable to programs such as syncterm and netrunner. Notably: It is an SDL2 graphics program and makes use of full OpenGL/DirectX graphics acceleration. This is not a console application.

The removal of Boost libs will be replaced with standard C++11 functionally instead. The build and project files are currently in the process of being rewritten and separated in folders by environment/os.

The previous 3.0 Demo branch is a fork and rewrite of the internals for EtherTerm. This version differs a bit as asynchronous sockets were added along with the ability to open several connections in their own windows. Other telnet option fixes and updates to the terminal have also been added along with some pre-testing of file upload/downloads. Still very raw (Dialing Directory is still unfinished. This more of a POC (Proof of concept) rewrite to see what can be done differently. Also some rendering changes were made and are in testing such as recolor blocks using alpha channels for a slight speed up. Note the 3.x branch had some experimental stuff I was testing, right now I've had to roll back several commits and some things are disabled until I get time to fix and re-implement them. Mainly input fields for SSH Connections.

Please keep in mind this is Alpha Software and is very much a work in progress.

EtherTerm is Open Source Software, (c) 2014-2019 Michael Griffin <[email protected]>

Screenshot

Currently, no auto-configure environment is provided, and build targets are limited to Windows, Linux, ARM, FreeBSD and OSX.

EtherTerm is Alpha software. Please report any issues or feature requests as a github issue. Pull requests and contributions are always welcome.

Each system can be setup with a default font. Any systems using Syncterm escape sequences for font switching will override the default font.

  • VGA-8x16 (CP437)
  • MicroKnightPlus-8x16 (AMIGA)
  • Mo'soul-8x16 (AMIGA)
  • Pot Noodle-8x16 (AMIGA)
  • Topaz Plus-8x16 (AMIGA)

ALT + ENTER cycles between:

  • 1x unscaled window
  • 2x scaled window
  • scaled fullscreen

Etherterm currently follows the default Windows telnet output keys sequences as used in Syncterm as ANSI, VT100, LINUX and SCO key mappings are also available.

Copy and paste is comparable to X11: Left mouse click and drag to select text on the screen, release to copy selected text to the clipboard. Right mouse click to paste text from the clipboard.

To add new systems or remove, you must edit the assets/dialdirectory.xml file.

For all other systems, you must build from the project folder.

Generally, the following libraries must be installed:

  • sdl2
  • libssh (Requires OpenSSL, Zlib)
  • yaml-cpp

As well as a recent version of gnu/gcc providing g++, or clang. GCC/G++ version 5.x and above are required along with -std=c++11

  • I highly reccomend and IDE such as - CodeLite
  • Makefiles generated from Codelite are available in the project folders for building on the commandline.
  • FreeBSD 11 and OSX High Sierra have been tested with latest version of clang LLVM
  • For Windows, mingw32 or 64 is required.
NOTE: EtherTerm will seek an ./assets folder relative to the executable. In this way,
it is not (yet) a very "portable" executable. At this stage, a build folder has been created with quick scripts that will copy from the DEBUG folder to the build folder where the assets is now located by default.
  • "change_scroll_region": csr terminal sequence.
  • "alternate screen" buffer: smcup, rmcup terminal sequence.
  • scrollback buffer.
  • interactively edit the dialing directory.
  • other runtime configuration/setup options.
  • alternative window sizes, currently limited to only 80x25.
  • attempting to reach compliance with terminal type 'xterm-256color'.
  • transfer protocols (x, y, and z-modem).
  • ftp client support.
  • utf-8 encoding.
  • dingo: Telnet options and general terminal functionality.
  • g00r00: Optimization ideas on scrolling pixels faster.
  • SDL Game Development.
  • maze: Testing and bug reports.
  • Caphood: Testing and bug reports.
  • IceDevil: Testing and bug reports.
  • haliphax: Testing and bug reports.
  • hellbeard: Testing and bug reports.

EtherTerm is available under the zlib license : This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.

Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

etherterm's People

Contributors

gvanem avatar haliphax avatar jquast avatar m-griffin avatar w8bsd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

etherterm's Issues

SDL Mousedown On Titlebar doesn't update state when you release the mouse button.

SDL Mousedown On Title bar doesn't release Button State when you release the mouse button.

This issues occurs if you click outside of the windows, then click the title bar to regain application focus. The program still believed the mouse is being help down after the release of the button until you click and release again inside of the window.

This is a know SDL issue which has been reported and closed as fixed in the upcoming 2.0.4 Release. This release is not out yet and will be tested once it's ready.

[0.4.0-Alpha] Hardcoded paths in build

When trying to make the Makefile in the ./linux directory someone gets this result:

bastetfurry@katzenrechner:~/compile/EtherTerm/linux$ make
----------Building project:[ EtherTerm - Debug ]----------
make[1]: Verzeichnis „/home/bastetfurry/compile/EtherTerm/linux“ wird betreten
/usr/bin/g++  -c  "/home/blue/code/EtherTerm/src/input_handler.cpp" -g -O0 -pedantic -W -std=c++11 -Wall   -o ./Debug/up_src_input_handler.cpp.o -I. -I. -I.. -I../src 
g++: error: /home/blue/code/EtherTerm/src/input_handler.cpp: Datei oder Verzeichnis nicht gefunden
g++: fatal error: no input files
compilation terminated.
EtherTerm.mk:98: recipe for target 'Debug/up_src_input_handler.cpp.o' failed
make[1]: *** [Debug/up_src_input_handler.cpp.o] Error 1
make[1]: Verzeichnis „/home/bastetfurry/compile/EtherTerm/linux“ wird verlassen
Makefile:4: recipe for target 'All' failed
make: *** [All] Error 2

This fails because there are hardcoded paths in the Makefile.

[0.4.0-Alpha] Add Input Parsing Methods back with UTF-8 Support

SDL Input translates all input to UTF-8 automatically. We need UTF-8 aware string, parsing, and input methods.

Since we removed boost, all previous methods used in Obv/2 XRM need to be reworked.

  1. Add new mini support for UTF-8 basic's for count chars, then parsing strings.
  2. Move over and rework methods so we can update the dialing directory add input fields for
    a. configuration
    b. ssh login / password
    c. irc text and command input
    d. much more.

Automatic builds for Linux, OSX, Windows, and FreeBSD

I will use my existing build infrastructure (TeamCity) to provide automatic builds.

  • I need to add Windows and FreeBSD slaves to my build environment.
  • I might also need to add an Arch Linux build slave -- however it might be much more convenient to make an Arch Linux "AUR", which allows Arch Linux users to build themselves, i have some experience with this, as does @tehmaze.
  • If I provide a Windows VPS (Azure?), I hope you can help prepare it with the necessary build environment? What OS would be best, Windows 2012 server?

[0.4.0-Alpha] - Enhancement to Parse PIPE codes for older system

Older Systems don't always parse PIPE COLOR Codes to ANSI Colors. So when reading messages you are left seeing like of PIPE Codes everywhere.. (ex.. |01|02 etc..)

Add a new flag to the dialing directory that will toggle parsing pipe codes displayed by a BBS into color ANSI Sequences so they are removed and we can see colors.

Brew Formula

It would be helpful to be able to install this via Homebrew (as some of the dependencies already are), either as a build, bottle (or both), or a cask.

I've gone ahead and jumpstarted this with the following formula. It would need to be refined and completed, as right now it builds but when you execute EtherTerm at the command line, it fails because of the working directory is where home-brew installs the binary and is not user writable.

class Etherterm < Formula
  desc "EtherTerm is a portable terminal emulator and telnet/ssh client for Windows and Unix."
  homepage "http://m-griffin.github.io/EtherTerm/"
  head "https://github.com/M-griffin/EtherTerm.git"

  depends_on "sdl2" => :build
  depends_on "sdl2_net" => :build
  depends_on "libssh" => :build
  depends_on "yaml-cpp" => :build

  def install
    # ENV.deparallelize  # if your formula fails when building in parallel
    # system "./configure", "--disable-debug",
    #                       "--disable-dependency-tracking",
    #                       "--disable-silent-rules",
    #                       "--prefix=#{prefix}"
    # system "make", "clean-osx"
    Dir.chdir('osx')
    system "make", "-f", "EtherTerm.mk"
    bin.mkpath
    bin.install "./Debug/EtherTerm"
  end

  test do
    # `test do` will create, run in and delete a temporary directory.
    #
    # This test will fail and we won't accept that! For Homebrew/homebrew-core
    # this will need to be a test that verifies the functionality of the
    # software. Run the test with `brew test EtherTerm`. Options passed
    # to `brew install` such as `--HEAD` also need to be provided to `brew test`.
    #
    # The installed folder is not in the path, so use the entire path to any
    # executables being tested: `system "#{bin}/program", "do", "something"`.
    system "false"
  end
end

Hopefully someone will take this on as I pass the torch to get back to work on other things. Thanks for the app!

shift+up/down/left/right/tab not supported

should send

'\x1b[1;2A': code=337 name='KEY_SUP'
'\x1b[1;2B': code=336 name='KEY_SDOWN'
'\x1b[1;2D': code=393 name='KEY_SLEFT'
'\x1b[1;2C': code=402 name='KEY_SRIGHT'
'\x1b[Z': code=353 name='KEY_BTAB'

Crash for each voice in the menu

I can't seem to be able to use any of the menu functions except exit.
I built it using the build.sh in the build directory
for example this is the error that crashes it if i choose Add to the list
/build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:1058: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator[](std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference = char&; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = long unsigned int]: Assertion '__pos <= size()' failed.

can't launch from another location

I have to drop into the directory where the EtherTerm binary is located before launching it. I can't, for instance do this, if I put the EtherTerm binary into a folder named EtherTerm in my home folder:

haliphax@oddnetwork:~$ EtherTerm/EtherTerm

Wasn't able to install on macOS

Spent an hour trying to install this software. Eager to get off SyncTerm and onto something else.

Would love a macOS install script or something. I am running macOS Mojave 10.14.2.

[4.0-Alpha] Replace ASIO with std::async and std::future handlers for socket i/o

We need something more flexible and without all of the boost lib dependencies.
ASIO is nice, but also takes a lot of work to integrate custom handles for libssh socket /io.
Create homegrown std::asyn methods with calls back that loop io in it's own thread, then pass back like ASIO does on connections and data from server.

Refactor sequence_parser.cpp

  1. switch is abused. It may make sense to populate a data structure, select from it and hope that the compiler would optimize it away.
  2. it is too coupled with drawing to screen. It may make sense to emit a sequence of structures describing chunks of text and their styles. And maybe create a separate lib, useful for other software.

[4.0-Alpha] SDL2_NET - Re-Implement from 2.x code.

With the removal of Boost and ASIO, were going back to SDL_Net for basic socket i/o. This is easier to abstract with Sshlib then trying to rewrite handlers in Boost to do ASIO on libssh callback methods.

[0.4.0-Alpha] Ansi redisplay parts of old buffer on new screen

When testing screens in Oblivion/2 XRM I noticed the Sysop screen was drawing then re-displaying part of the screen. When testing again 3.x version it didn't have this problem. Check that the buffer is clearing properly on clear screen codes, and also do a comparison with the 3.x version.

Some code was rolled back and still needs to be re-implemented in 4.x

[Feature request] Scanlines?

Hi there,

I tried this recently and was impressed, and since it's an SDL2 programs, I guess scanlines and screen curvature could be added as options, using shaders.
What do you think?

[0.4.0-Alpha] SDL2_NET - Missing SO_KEEPALIVE Socket Option

Research and double check this option is not available to be set.
If not, then see if we can get a patch into SDL2_NET, or could include one-off inside project.
This might be the cause of possible issue with MRC losing connections when the Socket Handle being passed.

typeahead is not possible: input is lost/unbuffered

If the output routine is busy (drawing a long ansi, for example), then any input received on keyboard is lost.

For interactive programs like an editor with a fast typist like myself, it is entirely possible that keyboard input may be lost.

Reproduce: telnet to 1984.ws, login, while artwork is displayed, "y" should quickly skip past this script. However, some or all of such input is lost, as top.py displays artwork slowly, and when the prompt is finally displayed, no input is given.

crash on startup

On Debian Testing

gcc (Debian 5.3.1-8) 5.3.1 20160205
libssh 0.6.3-4.2
libsdl-gfx1.2-5:amd64 2.0.25-5
libsdl-image1.2:amd64 1.2.12-5+b5
libsdl-mixer1.2:amd64 1.2.12-11+b1
libsdl-net1.2:amd64 1.2.8-4
libsdl-pango1:amd64 0.1.2-6
libsdl-sound1.2:amd64 1.0.3-7+b1
libsdl-ttf2.0-0:amd64 2.0.11-3
libsdl1.2-dbg:amd64 1.2.15-12
libsdl1.2-dev 1.2.15-12
libsdl1.2debian:amd64 1.2.15-12
libsdl1.2debian:i386 1.2.15-12
libsdl2-2.0-0:amd64 2.0.4+dfsg1-2
libsdl2-dbg:amd64 2.0.4+dfsg1-2
libsdl2-dev 2.0.4+dfsg1-2
libsdl2-net-2.0-0:amd64 2.0.1+dfsg1-2
libsdl2-net-dev:amd64 2.0.1+dfsg1-2

Starting program: /tmp/ttt/EtherTerm-master/EtherTerm 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Working directory is: /tmp/ttt/EtherTerm-master/
SDL init success
SDL_Window creation success
SDL_Renderer creation success
Surface & Textures Initialized. 
loading Fontname -> : vga8x16.bmp
loading Font -> current: vga8x16.bmp
*** Error in `/tmp/ttt/EtherTerm-master/EtherTerm': malloc(): smallbin double linked list corrupted: 0x0000000001fe77d0 ***

Program received signal SIGABRT, Aborted.
0x00007ffff6a75507 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
55  ../sysdeps/unix/sysv/linux/raise.c: No existe el fichero o el directorio.
(gdb) bt
#0  0x00007ffff6a75507 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007ffff6a768da in __GI_abort () at abort.c:89
#2  0x00007ffff6ab3a63 in __libc_message (do_abort=do_abort@entry=1, fmt=fmt@entry=0x7ffff6bac838 "*** Error in `%s': %s: 0x%s ***\n")
    at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007ffff6ab8ebe in malloc_printerr (action=1, str=0x7ffff6bacb70 "malloc(): smallbin double linked list corrupted", ptr=)
    at malloc.c:4965
#4  0x00007ffff6abaa43 in _int_malloc (av=av@entry=0x7ffff6de0c00 , bytes=bytes@entry=41) at malloc.c:3353
#5  0x00007ffff6abd395 in __libc_calloc (n=, elem_size=) at malloc.c:3213
#6  0x00007fffec544a42 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#7  0x00007fffec544ce5 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#8  0x00007fffec524ef3 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#9  0x00007fffec32e768 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#10 0x00007fffec3c35a8 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#11 0x00007fffec3c36d1 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#12 0x00007fffec3d98f5 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#13 0x00007fffec3db3d0 in ?? () from /usr/lib/x86_64-linux-gnu/dri/i965_dri.so
#14 0x00007ffff7b2baf0 in GL_CreateTexture (renderer=0x6935e0, texture=0x1ffdeb0)
    at /build/libsdl2-ni36uc/libsdl2-2.0.4+dfsg1/src/render/opengl/SDL_render_gl.c:783
#15 0x00007ffff7b24e6b in SDL_CreateTexture_REAL (renderer=0x6935e0, format=, access=1, w=680, h=480)
    at /build/libsdl2-ni36uc/libsdl2-2.0.4+dfsg1/src/render/SDL_render.c:459
#16 0x0000000000437ace in Renderer::createTexture (this=this@entry=0x65f0f0, textureType=textureType@entry=0, surface=0x200d220) at renderer.cpp:653
#17 0x00000000004396e2 in Renderer::renderCursorOnScreen (this=0x65f0f0) at renderer.cpp:1844
#18 0x0000000000439f55 in Renderer::setupCursorChar (this=this@entry=0x65f0f0) at renderer.cpp:2154
#19 0x000000000043a348 in Renderer::loadBitmapImage (this=0x65f0f0, fontName="vga8x16.bmp") at renderer.cpp:628
#20 0x0000000000405930 in main (argc=1, argv=0x7fffffffdf98) at main.cpp:174
(gdb) 

[0.4.0-Alpha] VTTest Terminal Complience

General Testing and working on VTTest to make sure the terminal supports and is working with terminal functionally correctly.

This include handling 7/8 Bit control Sequences and other sequences that terminals use and other features.
This will most likely be an ongoing process to keep update to date and try to add things that are missing.

cannot build features/0.4.9-alpha on debian stretch

Hi!!
I just testing the latest branch and i cannot build. First i had to install codelite to to "fix" the hardcoded paths in the linux/EtherTerm.mk (ProjectPath and WorkspachePath) then i can start compile but have follow error:

thanks!

toledones@gollum:~/src/etherterm/EtherTerm/linux$ make
----------Building project:[ EtherTerm - Debug ]----------
make[1]: se entra en el directorio '/home/toledones/src/etherterm/EtherTerm/linux'
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/input_handler.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_input_handler.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/link_list.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_link_list.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/main.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_main.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/menu_config.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_menu_config.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/menu_function.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_menu_function.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/menu_io.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_menu_io.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/menu_manager.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_menu_manager.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/protocol.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_protocol.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/renderer.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_renderer.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/screen_buffer.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_screen_buffer.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/sequence_decoder.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_sequence_decoder.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/sequence_parser.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_sequence_parser.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/session_manager.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_session_manager.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/surface_manager.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_surface_manager.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/telnet_manager.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_telnet_manager.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/window_manager.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_window_manager.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/io_service.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_io_service.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/socket_handler.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_socket_handler.cpp.o -I. -I. -I.. -I../src 
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/socket_ssh.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_socket_ssh.cpp.o -I. -I. -I.. -I../src 
/home/toledones/src/etherterm/EtherTerm/src/socket_ssh.cpp: In member function ‘int SSH_Socket::verify_knownhost()’:
/home/toledones/src/etherterm/EtherTerm/src/socket_ssh.cpp:332:13: warning: attributes at the beginning of statement are ignored [-Wattributes]
             [[gnu::fallthrough]]; // c++11 and c++14
             ^
/usr/bin/g++  -c  "/home/toledones/src/etherterm/EtherTerm/src/socket_telnet.cpp" -g -O0 -pedantic -W -std=c++11 -Wall  -o ./Debug/up_src_socket_telnet.cpp.o -I. -I. -I.. -I../src 
/home/toledones/src/etherterm/EtherTerm/src/socket_telnet.cpp:21:5: error: ‘SOCKET’ does not name a type
     SOCKET channel;
     ^~~~~~
/home/toledones/src/etherterm/EtherTerm/src/socket_telnet.cpp: In member function ‘virtual int SDL_Socket::getSocketInstance()’:
/home/toledones/src/etherterm/EtherTerm/src/socket_telnet.cpp:167:26: error: ‘struct _TCPsocket’ has no member named ‘channel’
     return m_tcp_socket->channel;
                          ^~~~~~~
EtherTerm.mk:250: fallo en las instrucciones para el objetivo 'Debug/up_src_socket_telnet.cpp.o'
make[1]: *** [Debug/up_src_socket_telnet.cpp.o] Error 1
make[1]: se sale del directorio '/home/toledones/src/etherterm/EtherTerm/linux'
Makefile:4: fallo en las instrucciones para el objetivo 'All'
make: *** [All] Error 2
toledones@gollum:~/src/etherterm/EtherTerm/linux$ 

hangs on pubkey authentication

I have an existing key for connecting to my system in ~/.ssh. Even though I have a username and password set in dialdirectory.xml, it uses the pubkey. On the BBS side of things, I see 2 notices of pubkey accepted for user 'haliphax', but EtherTerm hangs like it's still waiting for a response. If I rename ~/.ssh before launching EtherTerm, it honors the username and password set in the XML file and connects just fine. So, this is really two issues:

  1. If username and password are set for an SSH host, but a pubkey is found, it does not honor the XML settings for the host
  2. Pubkey authentication hangs EtherTerm

SDL Issue: Keypad Function keys not detecting Numlock properly on some OS's.

This more of an SDL issue then EtherTerm.
The event.mod & NUMKEY flag doesn't seem to be working correctly on Windows, and OSX. But works under Linux in conjunction with the TextInput.

TextInput gathers numbers from the keypad when numlock is on. However it also appears to getting number when numlock is off in Windows and OSX. Linux is not affacted.

Note to Self:
Possible fix is to ignore TextInput field When numlock is off and Keypad character is used. That way we only get the function key and not double keys of function and keypad digit.

error on startup

hi i just compile the feature/0.4.10-alpha branch:

ragnarok@ragnarok:/tmp/EtherTerm/build$ gdb EtherTerm 
GNU gdb (Debian 7.12-6) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from EtherTerm...done.
r(gdb) r
Starting program: /tmp/EtherTerm/build/EtherTerm 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
EtherTerm Working directory is: /tmp/EtherTerm/build/
SessionManager Created
Interface Created
[New Thread 0x7fffeeabd700 (LWP 14897)]
WindowManager Created!
Creating Window and Renderer!
SurfaceManager Created!
Session Created!
Joined SessionManager
InputHandler Created
Renderer Created
A Surface was Created!
A Surface was Created!
A Surface was Created!
A Surface was Created!
A Surface was Created!
A Texture was Created!
ScreenBuffer Created!
SequenceParser Created
SequenceDecoder Created
Protocol
Fontset Created!
MenuConfig Created!
MenuIO Created!
MenuFunction Created!
MenuManager Created!
Reading Theme: 
Reading file: /tmp/EtherTerm/build/assets/directory/directory.ini
 $$$ FONT_SET topazPlus-8x16.bmp
readDialDirectory - Done
m_system_entries.size(): 0
parseHeader()
sFONT_SET: topazPlus-8x16.bmp
Error, Fontsets not loaded!
EtherTerm: ../src/menu_manager.cpp:97: void MenuManager::parseHeader(std::__cxx11::string): Assertion `false' failed.

Thread 1 "EtherTerm" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51	../sysdeps/unix/sysv/linux/raise.c: No existe el fichero o el directorio.
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff67a942a in __GI_abort () at abort.c:89
#2  0x00007ffff67a0e67 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x5555555fa60d "false", 
    file=file@entry=0x5555555fa5f5 "../src/menu_manager.cpp", line=line@entry=97, 
    function=function@entry=0x5555555fa900 <MenuManager::parseHeader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::__PRETTY_FUNCTION__> "void MenuManager::parseHeader(std::__cxx11::string)") at assert.c:92
#3  0x00007ffff67a0f12 in __GI___assert_fail (assertion=0x5555555fa60d "false", file=0x5555555fa5f5 "../src/menu_manager.cpp", line=97, 
    function=0x5555555fa900 <MenuManager::parseHeader(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)::__PRETTY_FUNCTION__> "void MenuManager::parseHeader(std::__cxx11::string)") at assert.c:101
#4  0x000055555558a1c1 in MenuManager::parseHeader (this=0x55555744d480, file_name="default_theme.ans") at ../src/menu_manager.cpp:97
#5  0x000055555558b9ae in MenuManager::setupDialDirectory (this=0x55555744d480) at ../src/menu_manager.cpp:694
#6  0x0000555555575872 in Session::startMenuInstance (this=0x5555558ae000) at ../src/session.hpp:470
#7  0x00005555555761c2 in Interface::spawnLocalSession (this=0x55555585a5c0) at ../src/interface.hpp:169
#8  0x0000555555575d11 in Interface::startup (this=0x55555585a5c0) at ../src/interface.hpp:66
#9  0x00005555555738da in main (argc=1, argv=0x7fffffffdee8) at ../src/main.cpp:221
(gdb) 

[0.4.0 Alpha/master] Feature request: keep connection in same window

Running this on a semi embedded Linux system. The main application starts up fine, but whenever I try to connect to one of the services it freaks out when EtherTerm tries spawning a new SDL window.

Possibly a launch argument/config option for keeping everything to a single window?

Toggle for displaying incomplete ESC Sequences

Right now all invalid ESC sequences are displayed for debugging purposes. I've noticed on very large intro screens on Synchronet that random ESC sequences are coming over incomplete. I've double checked with raw socket reads on Winfows, Linux and OSX that this is not a parsing error and appears to be Synchronet issue.

I believe it's a good idea to setup a toggle remove invalid sequence from displaying to avoid the appearance of artifacts on the screen for release builds, but allow them during debug builds for testing.

Please use github tag o releases

Hi! i'm working on packaging EtherTerm for Debian.

I'm very grateful if you can tag o release the code of github. In this way is easy to use tools like watch files and uscan to download specific versions and notify for new releases.
You can use, for example "git tag v2.8" to create a new tag to the code tree.

I will fill a ITP (intent to package) report in the Debian bugtracker a will work on it.

Thank you!

Building issues (cross-compiling)

Hello!

I recently rooted my LG OLED TV and wanted to get a terminal there - when looking for SDL2 based terminals, I came across this one. And while building, a few issues, small ones though.

  1. None of the environment variables are respected. You assign CC via :=, but if you use ?=, the user can override them without having to use make -e, which is what I ended up doing.
  2. Quite a few libraries are missing (mainly the OpenSSL ones). An easy fix is to just add $(pkg-config openssl --libs).
  3. This might just be a problem on my toolchain (GCC 6.2.0) but I also had to add -lz -lstdc++. Thought it'd be standard, but apparently it's not.
  4. -lSDLmain is used but not available on my toolchain - however, from the looks of it, it's also not needed, at least on Linux (host OS is WebOS which runs GNU/Linux).

Just thought I'd leave the info here.

Have a nice day! :)

[0.4.0 Alpha] Add UTF-8 Output and Fontset

The plan is to also add Unicode or UTF-8 specific output for use with terminals and other languages eventually. This is far down the road map but it is the plan to add this.

[Demo 3.0 Branch] Cursor Forward Warpping, needs fixes

Found issues while testing Obv/2 XRM in linux that ESC[C cursor pushes forward shouldn't not wrap when it hits the end of the screen, this is causing display issues and verified with comparisons in Linux Terminal, Syncterm, and Putty.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.