PAC Manager Code
Brought to you by:
perseo22
| File | Date | Author | Commit |
|---|---|---|---|
| lib | 2010-11-15 | perseo22 | [r1] Initial import |
| res | 2010-11-15 | perseo22 | [r1] Initial import |
| LICENSE | 2010-11-15 | perseo22 | [r1] Initial import |
| README | 2010-11-15 | perseo22 | [r1] Initial import |
| make.sh | 2010-11-15 | perseo22 | [r1] Initial import |
| pac | 2010-11-15 | perseo22 | [r1] Initial import |
| pac.list | 2010-11-15 | perseo22 | [r1] Initial import |
| qrcode_pacmanager.png | 2010-11-15 | perseo22 | [r1] Initial import |
####################################################################### # This file is part of PAC( Perl Auto Connector) # # Copyright (C) 2010 David Torrejon Vaquerizas # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. ####################################################################### * PAC (Perl Auto Connector), by David Torrejon Vaquerizas (david.tv@gmail.com), is FREE software, released under GNU's GPLv3 license. * PAC is a SecureCRT/Putty/etc (connections manager with automations) equivalent for the Linux world. * FEATURES (by now): - Simple GUI to manage/launch connections to remote machines. - Configurable [Pre|Post]-connection local commands execution. - Configurable list of macros (commands) to send to connected client. - Configurable list of macros (commands) to execute locally when connected. - Configurable list of conditional executions on connected machine via 'Expect': . forget about SSH certificates . chain multiple ssh connections . automate tunnels creation . etc - Ability to connect to machines through a Proxy server! - CLUSTER connections. - TABBED/WINDOWED terminals - Local and Global variables, eg.: write down a password once, use it ANY where, centralizing its modification for faster changes! use them for: . password vault . reusing connection strings . etc - Seamless Gnome/Gtk integration. - Tray icon for 'right button' quick launching of managed connections. - Written in Perl/Gtk (wait, *is* that a feature? Well, it is for me! ;=) - It is FREE (as in freedom)!! and licensed under GNU GPLv3. * INSTALL: - Preferably, use "deb http://archive.getdeb.net/ubuntu lucid-getdeb apps", but if you can/want not to use it, follow next steps: 1: Download from Pac Manager sourceforge's project download page: 'libgnome2-vte-perl_0.09-1_i386.deb' or 'libgnome2-vte-perl_0.09-1_amd64.deb' 2: Depending on your architecture, install: a) 32 Bit Intel/AMD ==> libgnome2-vte-perl_0.09-1_i386.deb ...or.. b) 64 Bit Intel/AMD ==> libgnome2-vte-perl_0.09-1_amd64.deb - 3: Finally, install pac-x.y-all.deb - Now you can take a look at your Gnome's menu under "Applications" -> "Internet" -> "PAC", or type 'pac' in your terminal. * VERSIONS: - 2.5.2: . Added a right-click option for connections to send a 'magic packet' in order to make a "Wake On LAN" test port reachability . Added an option (disabled by default) under "Preferences" to probe server's connection port before connecting . Added an option so auto-save every session log to t user-defined folder . Added an option to put TABs at Top, Bottom, Left or Right side of the tabbed window . Added <Alt><n> to do the same as <Alt><c>: show the connectin window . Added an option to allow only one instance of PAC running at the same time (enabled by default) . Fixed a micro-bug that prevented the BPP rdesktop option from being correctly read from the config file . Modified the "Save" buttons from "Preferences" and "Edit Connection" to save AND close the window - 2.5.1: . Added a right-click option over the "Terminal" to change the TAB title temporarly . Added an option to manually choose the size (width x height) for the RDP sessions . Removed a bug that prevented copying/renaming/moving the "Connections" from the connections treeview (may fault, MY FAULT! :) . Removed a bug that prevented the correct saving of the log file!! . OMG!! Removed a bug that prevented launching a connection using the "Connect" button (among other problems...) . RDP protocol had a bug, which prevented it from being used!! - 2.5: . Added support for RDP (rdesktop and VNC (vncviewer): some people asked me for it; so, here it is! . Global variables in main "Preferences", eg.: write down a password once, use it ANY where, centralizing its modification for faster changes! . Added a righ-click menu entry over terminals to show the list of available connections . Added a new color for "unfocused terminal activity" (*blue* by default) . Revamped "Find..." dialog for terminals: now a textbox appears containing the full output, highlighting when double-clicked the selected matching lines! . Revamped "Preferences" dialog . Added a little icon different for every kind of connection (ssh, telnet, ...) . Fixed a micro-bug that prevented setting the terminal scrollback beyond 19999 (now it is up to 99999 but, really, *don't use that much of scrollback!!*) . Removed the option to save session log for "local shells" (did not work at all!) . Modified the code for "Save session log", since it did not work before!! - 2.4.1.7: . Added an option to use a Black & White icon in Tray . Added an option to choose the Connected and Disconnected TAB label colours . Added a GUI option to "Forward Agent" on SSH connections . Modified <Ctrl>-<W> to <Ctrl>-<Shift>-<W> keyboard shortcut to close terminal (Gnome-compliant shortcut) . Added <Ctrl>-<Shift>-<Q> keyboard shortcut to close PAC (Gnome-compliant shortcut) . Solved little bug that prevented splitting "Vertically" the "Local Shell" . Little GUI modification for "Preferences" dialog - 2.4.1.6: . Added de abbility to split HORIZONTALLY and VERTICALLY . Added an option on right-click menu on Terminals to allow to reset and clear terminal settings . Added <Ctrl>-<w> keyboard shortcut to close terminal (Gnome-compliant shortcut) . Added a "Close" button to "LOCAL SHELL" tab . Added some missing right-click features for "Local Shell" terminal . Modified the default behaviour of TABs: now they are in the main window by default (for *new* installations!) - 2.4.1.5: . Readded a "Close" button to every TAB . Now, TAB's titles will be RED on disconnected and DARK-GREEN for connected ones (icon has been removed) . Changing a TAB makes the "Environment" and "Connection" update to new focused TAB . Modified the tooltip for the "Advanced Options" entry in SSH config GUI (required use of '"', eg: -o "PreferredAuthentications=password") - 2.4.1.4: . Added "Remote Port Forwarding" SSH options to GUI . GUI modifications to make some 'entry boxes' smaller . Fixed a little regression bug regarding multiple connections selection . Added a couple of password pattern matching localizations (Spanish and German) - 2.4.1.3: . Fixed a bug regarding the Advanced Options in SSH configuration . GUI modification to allow a smaller size of main window (for los resolution/screens) - 2.4.1.2: . Now, every "Hidden" (and "Password") fields are encrypted (Crypt::CBC + Crypt::Blowfish) in the config file . Added an entry to the tray menu to start a "Local Shell" . Fixed a minor bug regarding the "Cluster" window - 2.4.1.1: . Guess what? A new bug regarding a newly created 'local shell' was corrected - 2.4.1: . Added a button to start a local shell . Added a button to launch local commands on editing window . Added option to directly detach tabbed terminal and go fullscreen with F11 . Added a tooltip for "ENVIRONMENT VARIABLES" shown when editing a connection - 2.4.0.4: . Fixed a GUI-micro-bug regarding local/remote command in terminals . Added an option to start PAC main window ( not only the terminals windows) maximized . Modified the Terminal to get keyboard focus when "middle-clicking" (paste) with mouse . Modified the position of the screenshot frameand the minimal size of the main window to fit in smaller screens - 2.4.0.3: . Fixed a some of bugs regarding split/tab/cluster/... . Fixed a bug that prevented the main window to be shown when "Start Iconified" was choosen . Fixed a minor bug that showed the "Local" and "Remote" commands in terminals even if no action was configured - 2.4.0.2: . Fixed a bug that prevented showing the right-click contextual menu under some circunstances . Fixed a couple of minor bugs regarding "Screenshots" . 1 or 2 *millions* of bugfixes with tabs/splits (Yeah! You know! This is PAC! ;) - 2.4.0.1: . Fixed a bug regarding detach/reattach + splitting terminals - 2.4: . Added the option to *SPLIT HORIZONTALLY* two terminals in a same window! . Some libraries cleanup and code reorganization - 2.3.4.2: . Fixed a couple of minor gui bugs - 2.3.4.1: . Added a "Terminal Transparency" option for terminals - 2.3.4: . Added the possibility to modify some 'per-terminal' options: command prompt, timeouts, colours, ... - 2.3.3: . Added an option to embed the tabbed terminals window into Main PAC window . Added 'Full screen' option for the Terminals (<F11>) . Solved a bug that made a connection failing when connecting and resizing the terminal at the same time . Fixed a couple of minor GUI glitches - 2.3.2: . Added a "Take Screenshot" option to make/show a screenshot of every connection . Added a command 'History' (<Alt><h>) in the Terminal window for user commands . Migrated the config file '~/.pac.yml' to new config dir '~/.pac/' . Minor code improvements and bug fixes - 2.3.1.3: . Fixed some bugs regarding specific 'Method' options (you know: new GUI -> new BUGS, that's PAC !! ;) . Added some checks for not allowing the entering of non numeric values in numeric Gtk Entry boxes - 2.3.1.2: . Fixed a bug that did not allow to configure "Advanced Options" in 'ssh' connection method - 2.3.1.1: . Fixed a regression bug regarding Telnet and FTP default ports - 2.3.1: . Fixed a bug that prevented every tab other than the 'Method' specific one from being showed! (that Notebook Gtk widget is a little tricky!!) - 2.3: . NEW revamped GUI! Now, every 'Method' for connecting has its own GUI that (finally!!) simplifies the process of configuring every connection. No more 'use that text box to put the command line options you want'. That is, the differente GUIs allow you to (depending on the method, of course): . forward local ports in SSH . create local dynamic sockets . click to enable/disable flag options . etc. . Fixed a minor aesthetical bug - 2.2.1: . Added the possibility to edit a connection on-line with realtime updates to GUI (<alt>-e or right-click menu item) . Added <Ctrl><Ins> to copy and <Shift><Ins> to paste ( beyond <Ctrl><Shift>C / <Ctrl><Shift>V ) . Fixed a bug with default Telnet && FTP ports! . Fixed a bug that prevented PAC from checking for the 'Username: ' string when waiting for login username input. . Fixed a bug that prevented a disconnected terminal from being added to a Cluster - 2.2: . Added a GUI to administrate CLUSTERS in realtime. . Code improvements (more objects!). . Fixed bug that allowed to type in a disconnected terminal and propagate those keypressed to the rest of members in the cluster. . Fixed some minor GUI glitches. . Code cleanup + improvements. - 2.1.2.2.1: . Fixed a bug that prevented any "Port" modification from being saved. - 2.1.2.2: . Added the possibility to select any number or connections and execute/delete them. . Added some code for softly close connections on tab/window close. - 2.1.2.1: . Fixed a couple of minor bugs with "Clustered Connections" . Fixed a couple of other minor bugs. - 2.1.2: . CLUSTER connections implemented!! Put any number of connections into a Cluster group, and any command given in any of those terminals will be replicated to all the members in the cluster!! . Many bugfixes and GUI glitches. - 2.1.1.3.1: . Fixed *terrible* bug when closing "Tabbed terminals" window!! - 2.1.1.3: . Fixed regression bug that prevented "Description" from being saved. . Fixed regression bug that made "Copy/Cut/Paste" fail on "Expect" properties tab. . Little improvements on Expect engine's disconnection routine. - 2.1.1.2: . Added the logic to detect "changes" in configuration, allowing for manual/automatic saving, and advertising of exit without saving. . Added a check routine to silently test config files at startup (good for version upgrades). . Little GUI speedup improvements. . More minor bugfixes. - 2.1.1.1: . Added an "Edit Variables" menu entry to quickly modify connections' variables. . Minor bugfixes. - 2.1.1: . Added a progressbar next to status bar to know how many 'expectations' there are before getting 'connected'. . Little GUI improvements. - 2.1: . Added a status bar to the terminal to show connection status (with a tooltip that shows every step made to connect). . Added an option for local/remote commands to be confirmed before their execution. . Expect engine refined to allow more variables substitutions and avoid connection glitches. . Added option choose whether send (default) or not a "INTRO" keypress in 'Expect' commands. . Little GUI readjustment. . Minor bugs fixed. - 2.0.1: . Implemented the "so-much-missed" "UNDO" (Ctrl-z)function for every 'text' widget: Variables, Description, etc. . Modified the "Search" function in Terminals to allow to cancel any active search (good for unexpected long time searches!) - 2.0: . Well... I do not even know where to begin from!! ;) . NEW revamped GUI( more or less): "Simpler, Cleaner and Professional"(TM) ;) . Right click on automations provide context menus to fill in . Now user variables may contain runtime substitution variables (variables are getting more power on every new release) . Added link from '/opt/pac/pac' to 'usr/bin/pac' . Restartable session from terminal's right click menu . TAB title moved from 'tweak' to connection options . Initial preliminary 'man' page!!! (see 'man pac', but do not expect too much by now) . 70% of code rewritten (more objects, less bugs, less glitches, funnier!! ;) - 1.0: . Added the posibility to detach tabbed terminals into windows and viceversa !! . Revamped "find in terminal" gui . Lots of code rewritten: more modularized, cleaner and faster . Recursively auto accept consecutive unknown ssh_hosts connections . Added a new set of user dfined variables (next to 'OPTIONS' frame) where you can define some connection related variables in order to simplify the modification of pre/post/local/remote/expec options . Complete new filesystem architecture: no more use of standard Linux directories: now, everything goes into '/opt/pac' . Tweak TAB/window title by putting <TAB_TITLE:your new title:TAB_TITLE> anywhere in 'Description' . Added autonomous '.tar.gz' package: if you do not want or can not use any pre-built instalable (RPM or DEB), simply unpack 'pac-x.y-all.tar.gz' in your favourite directory and run 'pac' inside the new directory . Game over for 'Undo'. I give up (for now). Terrible bugs made me take this decision . Many little GUI improvements: icons, correct sizes, etc . Minor bugfixes (wrong handling of some <Ctrl> keypresses in terminals) - 0.9.6.6: . Added "search" capability to the Terminal (<Ctrl><F3>, or right-click menu): a new window will popup with matching lines. . Minor code bugfixes: some <Ctrl><key> combinations resulted in corrupted keyboard mappings. - 0.9.6.5: . Added cursor shape selection: block, underline, ibeam - 0.9.6.4: . Added right-click mouse menu for copy/cut/paste/delete full Expect entries - 0.9.6.3: . Implemented Expect executions mobility!! - 0.9.6.2: . Added Terminal right-click option to save terminal's session output - 0.9.6.1: . Bugfixed: added dependency for 'cu' and 'remote-tty' - 0.9.6: . Modified GUI to use a combobox for supported connections methods - 0.9.5: . Added connection checkbox to avoid any expect automation and let the user interact since the begining of authentication . Substituted 'trash' icon in Expect notebook tab by a checkbox to use or not that expect in a quick/non-destructive way . Changed some GUI updates to avoid some *not-so-brand-new* bug... ;) . Minor code improvements - 0.9.4.2: . Added <<ENV:variable_name>> for both local and remote commands: substitute this string (<<ENV:variable_name>>) for user's given environments 'variable_name' (eg: export DISPLAY=<<ENV:DISPLAY>>) - 0.9.4.1: . Added connection support for: 'sftp', '[p]ftp', 'cu' (experimental!), 'remote-tty' (experimental!) - 0.9.4: . Right click on Terminal also allows to launch local/remote macros! . Some GUI cleanup and fixing . Added .rpm packages for gnome's vte dependency (untested!!) in both 32 and 64 bit flavours - 0.9.3: . Removed 'gtkitemfactory' dependency (deprecated) for right click popup menus. Instead, use 'popupmenu' function from Quentin Sculo <squentin@free.fr> (see 'gmusicbrowser', amazing Perl/GTK music organizer!!) . Improvements in right popup menus GUI . Added tooltip for tray icon menu (shows connection description) . PAC's connection engine modified to detect invalid usernames when login . Minor code improvements - 0.9.2: . Fixed bug that preventes font type to be taken into account . Added right mouse click pop menu for connections list . Code cleanup - 0.9.1: . Removed 'escape' key minimizes . Added option to minimize instead of closing . Fixed som minimizing bugs - 0.9: . Moveable TABS . 'UNDO' routine cleanup and bugfix - 0.8.2: . Closing with middle-click on a tab results in closing any other tab *but* the one to be closed!!! . 'undo' enhancements and bugfixes - 0.8.1: . Regression bug for selecting tabs with mouse clicks . Regression bug when copying/pasting connection - 0.8: . 'UNDO' routine fully implemented (but be careful when using it! ;) . Connections 'Cut/Copy/Paste' also fully implemented (TONS of bugfixes!!) . TABS selection GUI on terminal improved . More code cleanup - 0.7: . Lots of code cleanup! . Now only 'PAC Config' window is rendered throught GLADE (everything else is hand made) . Environment renaming working again . Removed default <QUICK> environment/connection . Some GUI improvement . Many bugfixes - 0.6.1: . Keypress on terminal bugfixes (many) for Ubuntu >= 9.10 . Some code cleanup - 0.6: . Fixed *terrible* regression bugs: pre/post executions . Removed file 'pac_terminal.glade'. Now every terminal widget is hand made! ;) . More bugfixes - 0.5: . Icons to close tabs . Added tab right-click mouse button menu (copy, paste, change tab and close terminal) . TONS of bugfixes for scrolled windows - 0.4: . TABS !!! Now you can choose if new connections must go tabbed in main window or in new ones (navigate the same way you do with gnome-terminal) . Minor bugfixes - 0.3: . Added terminal fore/background color ( default = white text over black background ) and font ( default = monospace 9 ) selection support . Local & remote execution prompt user for substitution of variables like '<<var_1>>', '<<var_2>>' and so on . Resized trayicon art . Bugfixes - 0.2: . Complete code rewrite (now, object oriented from top to bottom!) . Removed 'libgtk2-trayicon-perl' dependency . Added trayicon information about running connections . Moved '/etc/pac.yml' file to '$HOME/.pac.yml' . Bugfixes . More things I just can't remember right now... ;) - 0.1: Initial release * KNOWN BUGS: - 'Undo' routine is not 100% reliable... ... well, not even 70%... ... well... ... well, you better do not play with 'Undo' :) * QUESTIONS AND ANSWERS: Q: Why did you started programming this 'little monster'? Could you not simply use *ssh in a terminal*, or *putty for linux*? Eh? Couldn't you? A: Hell! NO!! Just take a look at PAC and *tell me* whether you find or not these features in any other piece of Linux software! And yes, I wanted a GUI to manage my 'zillion' of connections to administrate servers in my IT job. And that GUI should be nice/quick enough as to be usable, and I think I got it! Just let me know! (Really: it is 'priceless' to have an intuitive GUI that helps you start with a simple click from the systray a connections that ssh's to one machine, autologins, executes something, then ssh's from that machine to another, autologin again, and finally brings a third machine remote ports locally to my laptop) Q: Why 'PAC'? It sound terribly awful and... welll... it sucks!! A: You are in reason. In fact, you *should* propose me a *better* name for it... Q: Why in the world is this piece of cr*p (I mean, 'software') written in Perl language? Is not there any uglier/older/unfashinable language? A: I'm glad you ask so. Perl is the only language I know. And I like it. And you *should* like it too. You ALL should give *love* to this adorable language by Larry Wall. Oh, and no, there is no older or uglier or what-ever-you-ask-for language to program with. Q: Your programming style sucks! When are you gonna learn to program like human beings? A: Since I do not think of myself as a human being, I do not feel the necesity to learn such a thing (despite I know for sure *that* would be great!) Q: For God's love, I really hate you and the way you program! A: That's not a question, but anyway, I do also hate MY programming style (believe me, now I am slacking my face and pressing my nipples strongly in order to punish myself for being such a bad programmer! ;) Q: Anyway, now that I'm used to it, I'm wondering how *often* will you upload new versions. Could you tell me, please? A: Well, you know, I AM 'too old', 'too married' and 'too father' as to have *enough* time as to be modifying PAC every day, so... well...mmm... NO IDEA! Q: Oohh... so many questions... why 'YAML', why 'Gnome2:Vte', why...??? A: Blah blah blah... shut the f**k up and simply use it!! ;)