0
I Use This!
Inactive

Commits : Listings

Analyzed about 10 hours ago. based on code collected 1 day ago.
May 16, 2023 — May 16, 2024
Commit Message Contributor Files Modified Lines Added Lines Removed Code Location Date
app_terminal.py: Changed the "terminal:set_title" event so that the terminal number gets passed as the first argument. app_terminal.py: Fixed a number of bugs related to restoring/setting terminal titles. They should now be restored properly under all circumstances (resume, restart server w/dtach, etc). terminal.js: Added a global 't' shortcut for `GateOne.Terminal`. Still need to go through the code and change it to use it (to make it less verbose) but I already took care of a few things. Mostly a cosmetic thing so low priority. terminal.js: Lots of fixes related to displaying terminal info when switching terminals. terminal.js: Lots of fixes related to popup terminals. terminal.js: Made many improvements to terminal sizing/alignment when sessions are restored. Terminal Themes: Numerous tweaks to terminal info popups. terminal.js: Added a new function: `GateOne.Terminal.setTitle()`. It knows the difference between a regular terminal and a popup terminal and will set the title appropriately. terminal.js: Added a message that gets displayed to let the user know their terminals are in the process of being restored. gateone.js: Added a 'noLog' argument to `GateOne.Visual.displayMessage()` for those messages that shouldn't be logged. Themes: Improved dialog title stuff. More... over 10 years ago
terminal.js: (Actually) fixed the bug where terminals were not being auto-scrolled to the bottom of the view when switching workspaces. (It helps if you paste the right thing, apparently) More... over 10 years ago
terminal.js: Fixed the bug where terminals were not being auto-scrolled to the bottom of the view when switching workspaces. More... over 10 years ago
terminal.js: Fixed a bug in GateOne.Terminal.newTerminal() where you'd get an exception trying to open a new terminal without passing any settings at all (caused bookmarks to not work properly). More... over 10 years ago
app_terminal.py: You can now set icons for "commands" in 50terminal.conf. They must be SVGs. You can add the entire text of the SVG as the value of "icon" or you can provide a path t the .svg file. app_terminal.py: Terminal sub-commands will now use an auto-generated SVG icon that contains the sub-command (which looks nice and is pretty cool!). app_terminal.py: You can now use shell variables in "commands". So if you set some environment variable like $FOO before you start gateone.py you can use that in a "command" just like you would in a shell script. E.g. "/path/to/command.sh $FOO". app_terminal.py: Popup terminals are now resumed properly. Even if restarting gateone.py and resuming a dtach session! terminal.js: You can now pass 'noAdjust' as an option to `GateOne.Terminal.newTerminal()` to ensure that the `rowAdjust` and `colAdjust` settings are not applied to the new terminal. terminal.js: Popup terminals will now be resumed properly when reloading the page. Only thing left to do is get the title being set properly (and maybe add a way to minimize them). Playback plugin: It will respect the 'noAdjust' setting on any given terminal by neglecting to add the spacer (for the playback bar) if set. More... over 10 years ago
SSH plugin: Fixed a cosmetic exception that could wind up in the logs if a terminal gets closed before the SSH connect string could be checked. app_terminal.py: When a user attempts to open a terminal using an invalid command they will no longer be left with a phantom terminal (it will now send the "terminal:term_ended" WebSocket action). More... over 10 years ago
Themes: Fixed the dialog CSS (it was completely broken for everything but popupTerm()). gateone.js: Minor adjustment to `GateOne.Visual.dialog()` to accurately set the height of the dialog container. gateone.js: Renamed the 'className' option that can be passed to `GateOne.Visual.dialog()` to just 'class' to match everything else in Gate One. More... over 10 years ago
gateone.conf: Modified the script to use /tmp/gateone.pid for the PID file so that it will work properly if Gate One is configured to drop privileges to some user other than root. More... over 10 years ago
term_ww.js: Fixed a HUGE performance bug which would cause Gate One to get slower and slower over time due to the scrollback buffer getting jillions of extra "<span></span>" elements. Apparently it took this long for me to notice because I'm always reloading the page to test new stuff! More... over 10 years ago
gateone.js: Fixed a bug where `GateOne.Utils.hideElement()` and `GateOne.Utils.showElement()` would only ever work once on any given element. This should resolve issue #312 (https://github.com/liftoff/GateOne/issues/312). More... over 10 years ago
app_terminal.py: Fixed a typo inside `TerminalApplication.save_term_settings()` in the name of the event it emits (had 'setings' instead of 'settings'). app_terminal.py: The functionality of `TerminalApplication.save_term_settings()` has been moved to a new file, term_utils.py so that it may be called asynchronously. It occurred to me that a web application embedding Gate One may wish to pass a *lot* of metadata when terminals are opened so I took that step to ensure that the read, JSON decode, JSON encode, and write operations don't block the main thread. Also, since this function gets called for every open terminal that could add up to a lot of operations. app_terminal.py: The `TerminalApplication.restore_term_settings()` function has received the same async treatment as `TerminalApplication.save_term_settings()`. app_terminal.py: The `TerminalApplication.set_title()` function now takes an extra keyword argument, `save=True`. If set to `False` it won't bother saving the title using `TerminalApplication.save_term_settings()`. terminal.js: The terminal information display is back! So when you switch terminals it should display the terminal number and the title in a decent-enough manner. gateone.py: The shortcut to the IOLoop inside `GOApplication` has been renamed from 'ioloop' to 'io_loop' to match everything else in Gate One. gateone.py: Added shortcuts to the CPU_ASYNC and IO_ASYNC globals inside of the base `GOApplication` class so Gate One applications can make quick asynchronous calls without having to instantiate their own (no need to ever have more than `cpu_count() + 1` gateone.py processes). go_async.py: Added a new method: `AsyncRunner.call_singleton()`. It works just like `call()` except it ensures that there's only ever one instance of the given function running at any the same time. Useful in situations where a single file may be updated in different places by the same function (e.g. `TerminalApplication.save_term_settings()`). Repeated calls to `AsyncRunner.call_singleton()` will merely result in each function being called when the previous one is complete (which is super handy!). gateone_utils_extra.js: Removed the try/catch block inside `GateOne.Utils.scrollToBottom()` since it really isn't necessary and it also prevents the browser from truly optimizing that function. go_async.py: `MultiprocessRunner()` now enforces itself as a singleton. So you'll only get at most cpu_count()+1 gateone.py processes--even if something calls a fork() later (e.g. if dropping privileges). go_async.py: Reduced the timeout before `AsyncRunner` instances shut down their executors from 2 minutes to 30 seconds. 99% of the time they'll be done with all their operations in just a second or two and it only takes milliseconds for them to restart themselves (very low overhead). It should also be mentioned that the executor shutdown process is safe: It will wait until all futures are done before it actually shuts itself down. gateone.js: Fixed the issue where the grid transition was a bit jerky. More... over 10 years ago
gateone.js: You can now resize dialogs via click-and-drag in the lower right-hand corner. gateone.js: You can now attach events to dialogs via the 3rd argument ('options') like so: `GateOne.Visual.dialog('title', content, {'events': {'moved': moveFunc, 'resized': resizeFunc, 'mousedown': mouseDownFunc}})`. You can attach whatever regular DOM events you like along with a few extras: 'opened', 'closed', 'moved' and 'resized' which will be called at their obvious junctures. gateone.js: You can now pass a 'style' to apply to dialogs via the 3rd argument ('options'). gateone.js: You can now hold down Ctrl+Shift and use your scroll wheel to control the opacity of dialogs. Themes: Removed the max-width and max-height properties from dialogs. Tweaked the inner container elements of dialogs--they're less complicated now. Themes: Lots and lots of tweaks to dialog-related CSS. Themes: Lots of *little* tweaks here and there. gateone.py: Added 'gateone_misc.js' to the list of JavaScript files that gets sent to the client after a connection is opened. terminal.js: You can now pass 'style' in the 3rd argument to `GateOne.Terminal.newTerminal()` to set the style of the created terminal. terminal.js and app_terminal.py: Changed how the 'terminal:terminals' WebSocket action works in conjunction with `GateOne.Terminal.newTerminal()`. Instead of just sending a list of terminal numbers to the client the server will now send an object that contains extra metadata associated with any given terminal. In conjunction with this, it is now possible to pass a 'metadata' object to `GateOne.Terminal.newTerminal()` inside of the 2nd argument (settings['metadata']). This will be recorded on the server and send back to the client as part of the 'terminal:terminals' WebSocket action. Applications and plugins can register an event (via `GateOne.Events.on()`) to handle terminals with a 'restoreEvent' attribute inside the terminal metadata. It's a bit more complicated than I'd like--but only because I had to maintain backwards compatibility. terminal.js: Added `GateOne.Terminal.popupTerm()`. It opens up a dialog with a terminal inside it. Pretty handy! Especially with the new dialog opacity controls. Still need to finish writing the functions that resume pop-up terminals properly though. Once that's done I'll be adding functions to turn any given terminal *into* a pop-up terminal and vice versa so you can do quick side-by-side comparisons of things (don't worry: split views are coming too). SSH Plugin: ssh.py: Fixed a bug where you'd get an exception trying to edit known hosts. Typo. SSH Plugin: ssh.py: Fixed a bug where if you passed the terminal number as a string to `open_sub_channel()` it would result in KeyError exceptions. Example Plugin: Fixed a couple bugs where it was referencing `GateOne.Example` (old way) instead of `GateOne.Terminal.Example`. Example Plugin: The "Top Top" example widget now looks *much* nicer. Playback Plugin: Fixed a bug where shift + scroll wheel + any other modifiers was controlling the playback history instead of *just* shift + scroll wheel. More... over 10 years ago
gateone.js: Added support for passing an array to `GateOne.i18n.gettext()` to make it more convenient to work with long strings (since JavaScript sucks and doesn't support proper multi-line strings). gateone.js: Fixed a bug where you'd get a blank screen upon loading Gate One if you had just one visible application but multiple sub-applications. gateone.js: The hard-coded 'text-align: center' in `GateOne.Visual.alert()` has been removed. gateone.js: Removed the `before()` and `after()` stuff from `GateOne.Events`. Nothing used it and it was unnecessary anyway (even though it was some cool JavaScript metaprogramming). gateone.js: Since the only thing using the `__parent__` attribute was the aforementioned functions I have removed that part of `GateOne.Base.module()` and `GateOne.Base.update()`. Help Plugin: This plugin is now using `GateOne.Base.SuperSandbox` to fix a bug where under certain circumstances it would load before `GateOne.Input` resulting in an exception. SSH Plugin: ssh_connect.py: Improved the handling of Ctrl-C and Ctrl-D (both are indications from the user they just want to quit ssh_connect.py). Convenience Plugin: Fixed a bug where clicking on the permissions in the output of 'ls -l' wasn't working. Themes: Added a new '✈centered_text' class which will be handy. `GateOne.Visual.alert()` is already using it. More... over 10 years ago
terminal.js: Added "GateOne.Input" to the list of SuperSandbox dependencies. gateone.js: Improved `GateOne.Utils.showElement()` and `GateOne.Utils.hideElement()` so that they do a better job preserving an element's original 'display' style. utils.py: Added a `touch()` function. This function is now being used in gateone.py for various things. utils.py: Updated `check_write_permissions()` to always return True if the user being checked is root. utils.py: Added support for capital "M" to indicate months in `convert_to_timedelta()`. utils.py: Added `kill_session_processes()` which will kill all processes associated with a given session. gateone.py: Fixed some bugs related to logging: Missing log files are now automatically created and setting `--logging=none` works properly. This should take care of the problem mentioned in issue #308 (https://github.com/liftoff/GateOne/issues/308). gateone.py: Added a new global function to cleanup old session directories: `cleanup_old_sessions()`. gateone.py: Added a new global function that calls the new `cleanup_old_sessions()` and the regular `cleanup_user_logs()`: `clean_up()`. gateone.py: Renamed the `user_logs_cleanup_interval` setting to just `cleanup_interval` since it now controls how often the user logs are checked *and* how often old sessions are checked. auth.py: Added a try/except block to the code that sends a message to the user indicating they're unauthorized to catch the edge case where the user disconnected the WebSocket before that message can be sent. Really just prevents a cosmetic exception from appearing in the logs. go_async.py: Fixed a bug in `AsyncRunner.shutdown()` which could crop up if a subclass never completed calling its `__init__()` function before the instance was removed and garbage collection took place. This should correct issue #310 (https://github.com/liftoff/GateOne/issues/310). terminal_input.js: Fixed xterm mouse support. You can now click without having to select text in the process (LOL, what a strange bug). It will also disable the native context menu but you can override this by holding down the alt key and clicking. This should resolve issue #306 (https://github.com/liftoff/GateOne/issues/306) terminal_input.js: xterm mouse support now works with the scroll wheel! Hold down the alt key to scroll normally instead (may be running into a browser bug here--sometimes it doesn't work--no logical reason why other than the browser doesn't like to scroll when alt is held sometimes). This should (hopefully) make the person that reported issue #306 *extra* happy :) gateone.py and app_terminal.py: The old `options.dtach` quitting-time stuff from gateone.py was moved to app_terminal.py in the form of a new `quit()` function that is decorated with the `@atexit.register` decorator (man I love that thing!). Bookmarks plugin: Tweaked the CSS so the edge of the star (in the background of the bookmarks panel) doesn't get cut off. More... over 10 years ago
terminal_input.js: Fix the bug where you couldn't highlight text in terminals after the first click. More... over 10 years ago
gateone.js: You can now rearrange workspaces via drag & drop! This required added all sorts of drag* event functions and changes to various aspects of the grid view. In the process of making these changes I also worked around the visual bugs (browser bugs) that make the toolbar and sidetitle show up in the wrong place after dropping out of grid view. gateone.js: Added `GateOne.Visual.relocateWorkspace()`. It is a new mechanism that will make it easier for applications to support being relocatable. By that I mean you can move the application from the current window/location to a new window or to the background (virtual location). gateone.js: `GateOne.Visual.disableTransitions()` and `GateOne.Visual.enbleTransitions()` can now be passed any number of elements to enable/disable transitions. They also now use the `classList` mechanism instead of using regular expressions/`indexOf()`. gateone.js: Added `GateOne.Visual.swapWorkspaces()` which will swap the location of any two given workspaces (numbers). It fires the 'go:swapped_workspaces' event when complete so that applications can take care of their own swapping (if any is necessary). gateone.js: Added a new "Locations" toolbar icon and several functions for controlling moving applications to/from locations (separate browser windows). Not enabled yet though (still need to finish the GUI stuff). gateone.js: Workspaces now have a 'data-workspace' attribute to make it easier to figure out what workspace number a particular node belongs to. terminal.js: Renamed `GateOne.Terminal.moveTerminalLocation()` to `GateOne.Terminal.relocateTerminal()` to better line up with the new `GateOne.Visual.relocateWorkspace()` function. terminal.js: Added `GateOne.Terminal.swappedWorkspacesEvent()` which is attached to the 'go:swapped_workspaces' event. It takes care of swapping terminals with each other after the workspaces have swapped. app_terminal.py: Fixed a bug in `TerminalApplication.move_terminal()` where moving a terminal to an existing location with no terminals would throw an IndexError exception. app_terminal.py: Added a new function: `TerminalApplication.swap_terminals()`. It will swap two given terminals with each other (number-wise). Bookmarks CSS: Minor tweak to make sure bookmark tags show up at the bottom of bookmarks. Themes: Adjusted the z-index properties for several classes to make them seem less random. terminal_input.js: Added an optional 'force' argument to `GateOne.Terminal.Input.disableCapture()` as well as some other improvements to the capture-related functions. gateone.py: Changed how `ApplicationWebsocket.get_locations()` works... Instead of sending a list of locations (e.g. `['default']`) it now sends a more complete dict object that contains the applications, running instances, when they were created, what "command" they're running, and their titles. More... over 10 years ago
terminal.py: Removed a leftover debugging statement. More... over 10 years ago
terminal.py: Disabled non-autowrap mode. There's just no way to get lines longer than the screen (in the browser) without it messing up edge cases all over the place. gateone.js: Fixed the bug where disabling transitions wasn't working (the setting wasn't being restored on page reload). gateone.js: `GateOne.Visual.stopIndicator()` now takes `GateOne.prefs.disableTransitions` into account when it does its thing. If you have transitions disabled it will set a shorter timeout and won't change the opacity. More... over 10 years ago
terminal.js and terminal_input.js: Moved the code that attaches `GateOne.Terminal.Input.capture()` to certain events from `GateOne.Terminal.init()` to `GateOne.Terminal.Input.init()`. This is to prevent an edge case where terminal_input.js is still being loaded when `GateOne.Terminal.init()` is being called (was only ever a small chance it could happen... if terminal_input.js needed to be re-minified but terminal.js did not). More... over 10 years ago
SSH plugin: Added an inactivity timeout to ssh_connect.py. If the user hasn't connected to anything in 120 seconds it will execute a script that waits for the user to press Ctrl-C to exit (tried to make it "Press enter..." but due to threading that didn't work). When it executes the timeout.sh script the memory consumption of ssh_connect.py should drop to minimal amount, saving loads of memory if you have a lot of idle terminal sessions that have yet to be connected. This should address the concerns posed in issue #296 (https://github.com/liftoff/GateOne/issues/296) in regards to having 1600 users with one (yet-to-be-connected/idle) terminal each. More... over 10 years ago
terminal.js and terminal_input.js: FINALLY! Fixed that STUPID BUG where the first time you click on a terminal it stops accepting keyboard input until you click on it one more time (and then the problem is fixed forever)! More... over 10 years ago
gateone.js: Did a bit of code organization/cleanup. gateone.js: LOADS of performance optimizations all over the place. The way JS is loaded/initialized happens much faster now. Seriously: The page load should be as quick as it gets. gateone.js: You can now provide "dependencies" in `GOApplication.info` dicts in the form of a list of JavaScript files that must be loaded before the client-side code will call `GateOne.Visual.newWorkspaceWorkspace()`. gateone.js: You can now pass functions as dependencies to `GateOne.Base.superSandbox` when wrapping code. If the function returns `true` it will be assumed that the dependency is met and vice versa. You can also mix & match strings like, "GateOne.Terminal" with functions like, `function() { return (GateOne.Utils.getNode('.✈icon_grid')); }`. If a depdendency function raises an exception it will be caught and assumed to have returned `false`. gateone.js: Applications can now provide a function as their `__appinfo__.icon` value. If `GateOne.Visual.newWorkspaceWorkspace()` detects that it is a function it will call it with the application's 'settings' as the only argument. Whatever is returned will be set as the application square's '✈appicon' innerHTML. gateone.js: Fixed a bug with `GateOne.Base.update()` where it could create `__parent__` attributes with circular references. gateone.js: Changed how `GateOne.Utils.hideElement()` and `GateOne.Utils.showElement()` work... They now use the `classList` attribute. Bookmarks plugin: Added a mechanism to provide favicon handlers: `GateOne.Bookmarks.registerIconHandler()`. Along with this a handler for retrieving favicons for HTTP and HTTPS URLs was also added as a default: `GateOne.Bookmarks.httpIconHandler()`. Bookmarks plugin: Moved the icon to the bottom of the file and moved the SSH icon to the SSH plugin. SSH plugin: Added a function that stores the SSH bookmark icon (uses the new registerIconHandler() function): `GateOne.SSH.bookmarkIconHandler()`. termio.py: Fixed an edge case where if you called `Multiplex.terminate()` before the log was created it would throw an AttributeError exception. terminal.js: Added lots of conditionals to prevent cosmetic exceptions from showing up in the JS console when you perform certain actions (such as closing terminals as fast as you can). gateone.py: Added `self.locations` to `ApplicationWebsocket.__init__()` to lessen the chance of an exception in the event that something closes the WebSocket connection too soon. golog.py: The `go_logger()` function now keeps tracks of which logs it has open via the `LOGS` global. This was added so that gateone.py would know which files to chown if `drop_privileges()` is run. Playback plugin: The playback controls will now hide themselves when switching to a workspace that does not contain a terminal. app_terminal.py: Reduced the time of the race condition check that looks for the situation where terminals are closing too fast from 1 second to 500ms so you can close terminals pretty quickly if you want without running into the forced 5-second delay. More... over 10 years ago
terminal_input.js: Made some futile adjustments to IME-based input in a sad attempt to make it work better on mobile browsers. Now if you switch to certain Android keyboards it's almost usable in Chrome. More... over 10 years ago
utils.py: Fixed a bug in `drop_privileges()` where it wasn't converting uid values given as strings into integers. Note that this doesn't impact Gate One at all since it pre-converts to integers before calling `drop_privileges()` anyway. A bug is a bug though. utils.py: The `drop_privileges()` function will now set `USER`, `LOGNAME`, `SHELL`, and `HOME` after it drops privileges. app_terminal.py: Before spawning a new terminal the environment variables will name have the default `os.environ` applied so the shell process will get the defaults in addition to any extras/overrides set by Gate One or the "environment_vars" setting. Themes: Switched from "Ubuntu, Arial Black, sans-serif" to "Ubuntu, Arial, sans-serif" because Arial Black looks fugly on Windows for some reason. Themes: Tweaked the CSS that controls the application icon grid in the New Workspace Workspace. REMOVED: Mobile plugin: The function it provides has been moved to various individual CSS files in the form of CSS media queries. Not that using a mobile browser is worthwhile anyway... Chrome for Android doesn't register kedown/keyup events (see my >1 year old bug: https://code.google.com/p/chromium/issues/detail?id=118639) which means you can't use the backspace key and Firefox mobile doesn't fire componsition* events properly (a new bug which I opened today: https://bugzilla.mozilla.org/show_bug.cgi?id=921209). terminal_input.js: Not that it matters but I cleaned up the code that deals with mobile browsers a bit. More... over 10 years ago
gateone.js: NEW FEATURE: `GateOne.Base.superSandbox()`. It's an alternative way to wrap JavaScript in a sandbox that automatically takes care of loading dependencies before loading the code wrapped in the superSandbox. All of Gate One's JS code (for the most part) has been modified to use the new superSandbox and the result is spectacular! Pages load *much* faster now and the responsiveness overall is improved (seriously!). go_async.py: Changed the order in which some `__init__()` stuff is loaded in order to resolve a problem reported in issue #303 (https://github.com/liftoff/GateOne/issues/303) where you'd get an AttributeError exception if the `MultiprocessRunner` had it's `__del__()` function called before it had a chance to complete instantiation. gateone.py: You can now disable the cleanup of user's 'logs' directories entirely by setting "user_logs_max_age" to "0". gateone.py: Changed how the license information is set. Gate One will now default to "AGPLv3" as the __license__ but will override that value at startup if a .license file can be found. Also made it so that the license information is sent as an HTTP header ("License") for all requests. This is to easily distinguish between commercial licensees and open source users. utils.py: Added "y" (years) support to the `convert_to_timedelta()` function. It doesn't take leap years into account but whatever. It's good enough for Gate One's purposes. app_terminal.py: Removed the legacy "session_logs_max_age" option from the auto-generated 50terminal.conf as it isn't used anymore. The correct setting for that is "session_logs_max_age" which is in 10server.conf (under "gateone"). Example Plugin: The Example plugin's JavaScript has been modified from `GateOne.Example` to `GateOne.Terminal.Example` to better reflect what it belongs to. Everywhere: All JavaScript has been updated to use the new `GateOne.Base.superSandbox()` sandboxing mechanism. This allowed me to reduce the timeouts on `GateOne.Utils.runPostInit()` so everything loads much quicker now. termio.py: Changed the `RE_OPT_SSH_SEQ` stuff to match the new style of setting the SSH connect string inside of ssh_connect.py. Logging plugin: Increased the size of the pagination text. Logging plugin: Fixed a bug where the 'printable' (aka 'flat') log output wasn't showing the background color the entire length of the page. More... over 10 years ago
app_terminal.py: Added GO_USER_SESSION_DIR to the list of environment variabls that get automatically exported to executed commands. It's the equivalent of `GO_SESSION_DIR/GO_SESSION'. SSH Plugin: Fixed a bug where ssh_connect.py was creating scripts in the `session_dir` instead of the user's session dir (e.g. `session_dir/session`). More... over 10 years ago
app_terminal.py: Fixed a bug where you'd get an exception if a user's term_settings.json file could not be decoded (for whatever reason). More... over 10 years ago
app_terminal.py: Fixed a bug where you'd get an exception if the term_settings.json file was missing in your session directory under certain circumstances. More... over 10 years ago
Bookmarks plugin: Improved the wording of a few strings here and there (nothing special). go_async.py: Added support for disabling the memoization cache to `AsyncRunner.call()` by passing `memoize=False` as a keyword argument. app_terminal.py: Added `GO_LOCATION` to the list of default environment variables that are set when spawning new terminals. app_terminal.py: Added three new methods to `TerminalWebSocket`: `save_term_settings()`, `restore_term_settings()`, and `clear_term_settings`. They will save, restore, and clear a dictionary of values that will be associated with a given terminal. The point being to be able to restore settings that were lost after the server is restarted (mostly for situations where dtach is used). app_terminal.py: Fixed a bug where setting `"dtach": false` in your 50terminal.conf wasn't being honored and the same problem that caused that was also causing issues with the `kill_terminal()` function (which was also corrected). This should fix the problem reported in issue #303 (https://github.com/liftoff/GateOne/issues/303). Note that this required adding a new function (`apply_cli_overrides()`) to mimic the same one in gateone.py. app_terminal.py: Terminal titles are now restored if you restart your Gate One server and then resume a dtached session. SSH Plugin: Changed how the SSH_SOCKET and sshConnectString values get stored/set/tracked/etc... This required adding some new capabilities to the optional escape sequence handler inside ssh.py as well as changes to ssh.js and ssh_connect.py. SSH Plugin: It is now using the `save_term_settings()` and `restore_term_settings()` functions to save and restore things like the SSH connect string and the path to the SSH socket. SSH Plugin: ssh_connect.py now uses the `GO_LOCATION` environment variable when naming its temporary scripts in the user's session directory. Everywhere: Modified some use of the logging module to use more appropriate loggers. More... over 10 years ago
go_async.py: Changed how functions get called... Instead of being called directly by child processes they are wrapped via the `safe_call()` function which sets the default signal handler for the `SIGINT` signal before calling the wrapped function. This prevents all sorts of garbage from being spit out to the terminal when you Ctrl-C a running gateone.py process if the `MultiprocessRunner()` hasn't shut itself down yet. go_async.py: Added a new method to `AsyncRunner()`: `map()`. It works similarly to the `map()` function included in `concurrent.futures` but with some special sauce to make it more flexible and expecially *more asynchronous* (take a look). gateone.py: Added a new function: `shutdown_async()`. It just shuts down the `CPU_ASYNC` and `IO_ASYNC` asynchronous task runners. It gets called when gateone.py exits via the @atexit.register decorator. gateone.py: Added a workaround for systems that don't support multiprocessing. So if your (wacky) system doesn't have enough semaphores or something like that the `CPU_ASYNC` global will just fall back to using `ThreadedRunner()` (faking it). More... over 10 years ago