./0000755000000000000000000000000011355055353007716 5ustar rootroot./usr/0000755000000000000000000000000011355055353010527 5ustar rootroot./usr/share/0000755000000000000000000000000011355055353011631 5ustar rootroot./usr/share/doc/0000755000000000000000000000000011355055353012376 5ustar rootroot./usr/share/doc/secpanel-0.6.1/0000755000000000000000000000000011355055353014630 5ustar rootroot./usr/share/doc/secpanel-0.6.1/COPYING0000644000000000000000000004311010625315025015654 0ustar rootroot GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 2 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, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. ./usr/local/0000755000000000000000000000000011355055353011621 5ustar rootroot./usr/local/lib/0000755000000000000000000000000011355055353012367 5ustar rootroot./usr/local/lib/secpanel/0000755000000000000000000000000011355055353014161 5ustar rootroot./usr/local/lib/secpanel/default.config0000644000000000000000000000007311337466421016776 0ustar rootrootset configs(entback) #fefefe set configs(listback) #ffffff ./usr/local/lib/secpanel/secpanel.wait0000755000000000000000000000031211337466421016642 0ustar rootroot#!/bin/sh # SecPanel # Shellscript for wrapping ssh-connections # Ver. for SecPanel 0.5.2 $1 cat < to continue... EOF read end ./usr/local/lib/secpanel/termdefs.txt0000644000000000000000000000407311337466421016541 0ustar rootrootset termtype(Aterm_titlepar) "-title" set termtype(Aterm_quotepar) "" set termtype(Aterm_iconpar) "-iconic" set termtype(Aterm_execpar) "-e" set termtype(Aterm_path) "aterm" set termtype(Eterm_titlepar) "--title" set termtype(Eterm_quotepar) "" set termtype(Eterm_iconpar) "--iconic" set termtype(Eterm_execpar) "--exec" set termtype(Eterm_path) "Eterm" set termtype(Multi-Aterm_titlepar) "-name" set termtype(Multi-Aterm_quotepar) "" set termtype(Multi-Aterm_iconpar) "-iconic" set termtype(Multi-Aterm_execpar) "-exec" set termtype(Multi-Aterm_path) "multi-aterm" set termtype(KDE-Terminal_titlepar) "--title" set termtype(KDE-Terminal_quotepar) "" set termtype(KDE-Terminal_iconpar) "" set termtype(KDE-Terminal_execpar) "-e" set termtype(KDE-Terminal_path) "konsole" set termtype(GNOME-Terminal_titlepar) "-t" set termtype(GNOME-Terminal_quotepar) "\"" set termtype(GNOME-Terminal_iconpar) "" set termtype(GNOME-Terminal_execpar) "-e" set termtype(GNOME-Terminal_path) "gnome-terminal" set termtype(Xterm_titlepar) "-T" set termtype(Xterm_quotepar) "" set termtype(Xterm_iconpar) "-iconic" set termtype(Xterm_execpar) "-e" set termtype(Xterm_path) "xterm" set termtype(RXVT_titlepar) "-title" set termtype(RXVT_quotepar) "" set termtype(RXVT_iconpar) "-iconic" set termtype(RXVT_execpar) "-e" set termtype(RXVT_path) "rxvt" set termtype(MRXVT_titlepar) "-title" set termtype(MRXVT_quotepar) "" set termtype(MRXVT_iconpar) "-iconic" set termtype(MRXVT_execpar) "-e" set termtype(MRXVT_path) "mrxvt" set termtype(XVT_titlepar) "-title" set termtype(XVT_quotepar) "" set termtype(XVT_iconpar) "-iconic" set termtype(XVT_execpar) "-e" set termtype(XVT_path) "xvt" set termtype(XFCE-Terminal_titlepar) "--title" set termtype(XFCE-Terminal_quotepar) "" set termtype(XFCE-Terminal_iconpar) "" set termtype(XFCE-Terminal_execpar) "-x" set termtype(XFCE-Terminal_path) "Terminal" set termtype(Putty's-Terminal_titlepar) "-title" set termtype(Putty's-Terminal_quotepar) "" set termtype(Putty's-Terminal_iconpar) "" set termtype(Putty's-Terminal_execpar) "-e" set termtype(Putty's-Terminal_path) "pterm" ./usr/local/lib/secpanel/secpanel_remoteconf.sh0000755000000000000000000000253511337466421020542 0ustar rootroot#!/bin/bash ########################################################################## # SecPanel.remoteconf - Client for Remote Account Manager # Shellscript for fetching and setting remote ssh access configuration # # Version SecPanel 0.6.0 # Author: Steffen Leich ########################################################################## function do_exit { echo echo -e "Remote account management: transfer finished ($MODE)\n\nPress to continue" read exit } if [ -z $5 ] then cat < EOF exit 2 fi HOST=$1 PORT=$2 USER=$3 SCPBIN=$4 MODE=$5 RFTS=$6 cat < /dev/null if [ $MODE = "read" ] then $SCPBIN -P $PORT $USER@$HOST:.shosts $USER@$HOST:.ssh/authorized_keys $RF chmod 600 $RF/authorized_keys $RF/.shosts 2>/dev/null elif [ $MODE = "write" ] then $SCPBIN -P $PORT $RF/.shosts $USER@$HOST: $SCPBIN -P $PORT $RF/authorized_keys $USER@$HOST:.ssh else echo "nothing to do..." fi do_exit ./usr/local/lib/secpanel/images/0000755000000000000000000000000011355055353015426 5ustar rootroot./usr/local/lib/secpanel/images/configs_gr.gif0000644000000000000000000000263411337466421020244 0ustar rootrootGIF89a((  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*\ȰÇ  E#'Zae͛8eąm[6lߐ1el[ز]m`̲EcX2հDh 7h iKfi;vsP\}thܹr6ͬ؂rADe,9o&VM0l]w8p +xHY̑s ypaYX͏#6lI 即ѬvK6ATIsLW2jҠ9BZ̞= 󅵘*+խ k1_D۶41r,gS`ĄMVѹ;u"1 2%[}<J2*/@r]A/K.`S,iex:J1 -LMl uGc#/K,hKCX6>QAh-2|N|y)/(M)ac /,?rP-GJʩP*B )8XAbz/Ҋ*beLj\$*CK5K)WbQĮ , AXlL*r )|IA8pCx톗#lɹ ;./usr/local/lib/secpanel/images/profiles_gr.gif0000644000000000000000000000330411337466421020432 0ustar rootrootGIF89a((  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*\paK!^HbJ ҵmGrC)mV)Sw^={0cʄI&=y݄j6n@q*H)ݦm[6kR7ϝ;yVݵۚº[I 'G 1dȒu WX1ax5LX;vJr7N[:|!g޼{˛5e^i7jK z5nNt$1<96,OwХf윶Gm6qyҙ+7.nҝ3g\3c!_i| *T&J4HEsѳlh6P46x4Ìx EҌ5(c3;P.4C 8 L5N20H2>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*\ȰÇ#JHŋ9ɢűǏ CRu1aƈ3˗0c< `Y4@ JT(` 5iSWJJuը\eS,lΡ;ٲhϪMn+lGO2 |h9O&M‡̶ڣ]52̖Zay˜jt7v^/j_4\c٪=N.N;|xYޜLl kLsrU= xnt2Œ34K =a3=Vۈ䀁3*/ق>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*\ȰÇ#JHŋ9ɢűǏ CRu1aƈ3˗0c< `Y4@ JT(` 5iSWJJuը\eSoΡKvٲhϚʠ)W5?v˗>U:e,}\UI3N>q#ˍ˯}MǞf,K&bуN>qᛍP4|h&Xش+1JKg/=U{REe0SiVdGO>=أV6L/6=iM\!= =Ѭg=bP-3QC4sUX 6TC 3YO4 0 )<7(<7c@ic4I 0B )ϢY%Z'BFAϦh '|3.h;'lRDӌA g>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*\ȰÇ#J𝾋={ћ7੄Νvb37Ǜ8oWgH@ń.9sƝ&>lĢF/`~ XKV̘cbT_6hЖ-Wn1r= eGMA+V ٱbQ=LlWV95hen[bhVeClk]nݲEv+b,FPLˆY,[[mW`=E}S2:Q0·[|XB*PJbz2|.xR"(= (I'g&`=R@ &d 5d&%L 嶛g32 D1<2 4LH)ICN1a8?"b!liH!"&! ."e6:~ǝxǝh2p}P*cP-vD*itQGD/ E'c69z**fj9CH2$*>1g`ja t\"c@WhZ؀ Rh?JEO+JeB =u@L9o*Jd1J$Iؐ .hm E)@?7 .-h K ǾRSDc)7 u RW-5f #@EWPYdJ9M> /7nraGtJ8q41I $PB ' )<[;ADJRMI!@B/ ߭5vP#6АC ?2N4# ;8+@f 6ԢM:w:ENQeN97p6|339N;_H!HxL1s|h@ڑ#bxKڱscL1ay Qa10*ca`"8̡w? ;./usr/local/lib/secpanel/images/back.gif0000644000000000000000000000031611337466421017017 0ustar rootrootGIF89a-=)BZ*C[-G`4So?eIuKxhϛМўџҠӣԤզժ׫خٯ!,K`&diyJWf0l KdMHBF0$cPd#tX"``z"M1jUn;./usr/local/lib/secpanel/images/keys_gr.gif0000644000000000000000000000277411337466421017574 0ustar rootrootGIF89a((  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~!Created with The GIMP! ,(( H*؉TAN-p׷oE2 fKS#<u, =e MX?@5P:9988=21211;/..-//.-7 +,,+,++,+, $H"(@q"!3 DHb(` ` AI0R@ @J8q;./usr/local/lib/secpanel/convert_history.tcl0000644000000000000000000000211711337466421020131 0ustar rootroot# convert_history.tcl # # converts SecPanel's old history file format to new format # implemented for SecPanel 0.40 and newer proc ch {} { global env set hfile "$env(HOME)/.secpanel/history" set hfile_backup "$env(HOME)/.secpanel/history_backup" set thfile "$env(HOME)/.secpanel/history.temp" if {! [file exists $hfile]} { puts "No history-file to convert" return } file copy -force $hfile $hfile_backup set hf [open "$hfile" r] set thf [open "$thfile" w] while {[gets $hf line] >= 0} { regsub " - " $line ";" newline set type [lindex [split $newline "\#"] 0] set date [lindex [split [lindex [split $newline "#"] 1] ";"] 0] set action [lindex [split [lindex [split $newline "#"] 1] ";"] 1] if [catch {set newdate [clock scan $date]} err] { puts "Found history file already updated..." file copy -force $hfile_backup $hfile return } puts $thf "$type\#[clock scan $date]\#$action" } close $thf close $hf file copy -force $thfile $hfile file delete -force $thfile puts "Finished converting history" } ch ./usr/local/lib/secpanel/export_profiles.tcl0000644000000000000000000001056011337466421020115 0ustar rootroot################################################################## # SecPanel # # Exporting profiles related code ################################################################## proc export {mode form} { global sites env widget configs # source def-files if {$mode == "def"} { if {[$widget(defsites) index end] > 0} { source "$env(HOME)/.secpanel/profiles/default.profile" set actconn [$widget(defsites) get active] set host [lindex [split $sites($actconn) #] 0] set userentry [lindex [split $sites($actconn) #] 1] if {$userentry == ""} { set user [askforuser] if {$user == "#####"} { return } } else { set user $userentry } set title $actconn } else { showmessage "No conncections available, please use \"New\"" "" return } } # source spec-files if {$mode == "spec"} { if {[$widget(specsites) index end] > 0} { set actconn [retprof [$widget(specsites) get active]] source "$env(HOME)/.secpanel/profiles/$actconn.profile" } else { showmessage "No conncections available, please use \"New\"" "" return } } # forwardings if {[array size lfs] > 0} { foreach lf [array names lfs] { if {[regsub {} [lindex [split $lf :] 1] $host th]} { append lf_tag " -L [lindex [split $lf :] 0]:$th:[lindex [split $lf :] 2] " } else { append lf_tag " -L [lindex [split $lf :] 0]:[lindex [split $lf :] 1]:[lindex [split $lf :] 2] " } } } else { set lf_tag " " } set localhost [info hostname] if {[array size rfs] > 0} { foreach rf [array names rfs] { if {[regsub {} [lindex [split $rf :] 1] $localhost lh]} { append rf_tag " -R [lindex [split $rf :] 0]:$lh:[lindex [split $rf :] 2] " } else { append rf_tag " -R [lindex [split $rf :] 0]:[lindex [split $rf :] 1]:[lindex [split $rf :] 2] " } } } else { set rf_tag " " } if {$user != ""} { set user_tag "-l $user " } else { set user_tag " " } if {$port == 22 || $port == ""} { set port_tag " " } else { set port_tag "-p $port " } if {$algo != "default" || $algo == ""} { set algo_tag "-c $algo " } else { set algo_tag " " } if {$identity != ""} { set ident_tag "-i $identity " } else { set ident_tag " " } if {$command != ""} { set command_tag "$command" } else { set command_tag "" } if $compress { # openssh if {$configs(sshver) == "OpenSSH"} { set compressval_tag "-o \'CompressionLevel [set compressval]\' " } else { set compressval_tag "-o CompressionLevel=$compressval " } } else { set compressval_tag " " } array set bools { "agentforward" "-a" \ "x11forward" "-x" \ "nopriv" "-P" "verbose" "-v" \ "quiet" "-q" \ "fork" "-f" \ "gateway" "-g" \ "compress" "-C" } # foreach f [array names $bools] foreach f {agentforward x11forward nopriv verbose \ quiet fork gateway compress} { if [set $f] { set [set f]_tag "$bools($f) " } else { set [set f]_tag " " } } # foreach f [array names $bools] foreach f {agentforward x11forward nopriv verbose \ quiet fork gateway compress} { if [set $f] { set [set f]_tagssh "yes" } else { set [set f]_tagssh "no" } } set sshvertag "-[set sshverconnect] " set ipvertag "-[set ipverconnect] " # openssh if {! $x11forward} { if {$configs(sshver) == "OpenSSH"} { set x11forward_tag "-X " } } set connstring "$configs(sshbin) $user_tag \ $agentforward_tag $x11forward_tag $sshvertag $ipvertag $port_tag $algo_tag \ $ident_tag $nopriv_tag $verbose_tag $quiet_tag \ $fork_tag $gateway_tag $compress_tag $compressval_tag \ $lf_tag $rf_tag $host $command_tag" switch -exact $form { "ssh" { puts "Host $host" puts "Compression $compress_tagssh" puts "CompressionLevel $compressval_tag" puts "ForwardAgent $agentforward_tagssh" puts "ForwardX11 $x11forward_tagssh" puts "GatewayPorts $gateway_tagssh" puts "HostName $host" puts "IdentityFile $ident_tag" puts "LocalForward" puts "Port $port_tag" puts "Protocol $sshvertag" puts "RemoteForward" puts "StrictHostKeyChecking" puts "User $user_tag" } "sh" { puts "#!/bin/sh" puts "#\n#Exported by SecPanel\n#" puts "$connstring" } } } ./usr/local/lib/secpanel/gui.tcl0000755000000000000000000043050411355053431015455 0ustar rootroot ############################ # code to load stock images if {![info exist vTcl(sourcing)]} { proc vTcl:rename {name} { regsub -all "\\." $name "_" ret regsub -all "\\-" $ret "_" ret regsub -all " " $ret "_" ret regsub -all "/" $ret "__" ret return [string tolower $ret] } proc vTcl:image:create_new_image {filename description type} { global vTcl env # image already existing ? if [info exists vTcl(images,files)] { set index [lsearch -exact $vTcl(images,files) $filename] if {$index != "-1"} { # cool, no more work to do return } } # wait a minute... does the file actually exist? if {! [file exists $filename] } { # try current directory set script [file dirname [info script]] set filename [file join $script [file tail $filename] ] # puts "looking for $filename..." } if {! [file exists $filename] } { set description "file not found!" set object [image create bitmap -data { #define open_width 16 #define open_height 16 static char open_bits[] = { 0x7F, 0xFE, 0x41, 0x82, 0x21, 0x81, 0x41, 0x82, 0x21, 0x81, 0x21, 0x81, 0x21, 0x81, 0x91, 0x80, 0x21, 0x81, 0x91, 0x80, 0x21, 0x81, 0x21, 0x81, 0x21, 0x81, 0x41, 0x82, 0x41, 0x82, 0x7F, 0xFE};}] } else { set object [image create [vTcl:image:get_creation_type $filename] -file $filename] } set reference [vTcl:rename $filename] set vTcl(images,$reference,image) $object set vTcl(images,$reference,description) $description set vTcl(images,$reference,type) $type set vTcl(images,filename,$object) $filename lappend vTcl(images,files) $filename # return image name in case caller might want it return $object } proc vTcl:image:get_image {filename} { global vTcl set reference [vTcl:rename $filename] # let's do some checking first if {! [info exists vTcl(images,$reference,image)] } { # well, the path may be wrong; in that case check # only the filename instead, without the path set imageTail [file tail $filename] foreach oneFile $vTcl(images,files) { if { [file tail $oneFile] == $imageTail } { set reference [vTcl:rename $oneFile] break } } } return $vTcl(images,$reference,image) } proc vTcl:image:get_creation_type {filename} { set ext [file extension $filename] set ext [string tolower $ext] switch $ext { .ppm - .gif {return photo} .xbm {return bitmap} default {return photo} } } vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/copy.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/cut.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/paste.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/new.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/open.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/save.gif" \ "" \ "stock" vTcl:image:create_new_image "/usr/local/vtcl-1.2.2/images/edit/replace.gif" \ "" \ "stock" } ############################ # code to load user images ############################ # code to load stock fonts if {![info exist vTcl(sourcing)]} { set vTcl(fonts,counter) 0 proc vTcl:font:add_font {font_descr font_type newkey} { global vTcl incr vTcl(fonts,counter) set newfont [eval font create $font_descr] lappend vTcl(fonts,objects) $newfont # each font has its unique key so that when a project is # reloaded, the key is used to find the font description if {$newkey == ""} { set newkey vTcl:font$vTcl(fonts,counter) } set vTcl(fonts,$newfont,type) $font_type set vTcl(fonts,$newfont,key) $newkey set vTcl(fonts,$vTcl(fonts,$newfont,key),object) $newfont # in case caller needs it return $newfont } proc vTcl:font:get_font {key} { global vTcl return $vTcl(fonts,$key,object) } vTcl:font:add_font \ "-family helvetica -size 12 -weight normal -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font1 vTcl:font:add_font \ "-family helvetica -size 12 -weight normal -slant roman -underline 1 -overstrike 0" \ stock \ underline vTcl:font:add_font \ "-family courier -size 12 -weight normal -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font3 vTcl:font:add_font \ "-family times -size 12 -weight normal -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font4 vTcl:font:add_font \ "-family helvetica -size 12 -weight bold -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font5 vTcl:font:add_font \ "-family courier -size 12 -weight bold -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font6 vTcl:font:add_font \ "-family times -size 12 -weight bold -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font7 vTcl:font:add_font \ "-family lucida -size 18 -weight normal -slant roman -underline 0 -overstrike 0" \ stock \ vTcl:font8 vTcl:font:add_font \ "-family lucida -size 18 -weight normal -slant italic -underline 0 -overstrike 0" \ stock \ vTcl:font9 } ############################ # code to load user fonts vTcl:font:add_font \ "-family fixed -size 9 -weight normal -slant roman -underline 0 -overstrike 0" \ user \ vTcl:font10 ############################################################################# # Visual Tcl v1.22 Project # ################################# # GLOBAL VARIABLES # global algo; global askuserspec; global compress; global compressval; global configs; global connwait; global fork; global gateway; global ipverconnect; global launcher; global noagentforward; global noexec; global nopriv; global quiet; global sshverconnect; global stricthost; global termicon; global verbose; global widget; set widget(.vTcl.fontmgr.listbox) {.vTcl.fontmgr.fra28.cpd29.01} set widget(.vTcl.fontmgr.text) {.vTcl.fontmgr.cpd43.03} set widget(addent) {.top17.fra44.fra19.fra28.02} set widget(agentent) {.top17.fra44.fra19.fra27.02} set widget(askeduser) {.top21.fra22.ent24} set widget(askpassent) {.top17.fra44.fra19.fra29.02} set widget(backbutton) {.top53.fra29.but33} set widget(browserent) {.top17.fra44.fra19.fra18.02} set widget(cfgfileent) {.top17.fra21.fra24.ent21} set widget(commandent) {.top17.fra21.fra24.ent26} set widget(comment) {.top17.fra21.ent23} set widget(commentent) {.top17.ent32} set widget(comprlev) {.top17.fra21.fra25.02} set widget(configsbut) {.top17.fra30.fra19.but24} set widget(confirmframe) {.top53.fra42} set widget(connectsbut) {.top17.fra30.fra19.but20} set widget(contbutton) {.top53.fra29.but31} set widget(defsites) {.top17.fra46.fra24.fra25.01} set widget(distconnlist) {.top53.fra34.cpd35.01} set widget(distkeyent) {.top17.fra35.ent40} set widget(distkeyentry) {.top53.fra20.fra26.ent28} set widget(distkeylist) {.top53.fra20.cpd22.01} set widget(distuserlist) {.top53.fra39.01.02} set widget(finishmessage) {.top53.fra42.mes44} set widget(host) {.top17.fra21.ent25} set widget(hostent) {.top17.fra21.fra24.ent20} set widget(hostframe) {.top53.fra34} set widget(hostkeyview) {.top19.cpd21.03} set widget(identityent) {.top17.fra21.fra24.ent19} set widget(identpath) {.top52.fra18.ent26} set widget(idents) {.top17.fra35.fra20.fra22.01} set widget(inport) {.top17.fra21.ent27} set widget(keydisthost) {.top17.fra35.fra17.cpd29.01} set widget(keydistkey) {.top17.fra35.fra17.ent23} set widget(keydistuser) {.top17.fra35.fra17.fra17.01} set widget(keyframe) {.top53.fra20} set widget(keygenent) {.top17.fra44.fra19.fra26.02} set widget(keylist) {.top52.fra34.cpd17.01} set widget(keysbut) {.top17.fra30.fra19.but23} set widget(knownhosts) {.top50.fra51.cpd54.01} set widget(lfcomment) {.top43.lab25} set widget(lfcommentent) {.top43.fra45.ent34} set widget(lfhost) {.top43.fra45.ent17} set widget(lfin) {.top43.fra45.ent46} set widget(lforwards) {.top43.cpd44.01} set widget(lfout) {.top43.fra45.ent48} set widget(messageline) {.top53.lab17} set widget(newaddr) {.top40.fra21.ent25} set widget(newtit) {.top40.fra21.ent23} set widget(newuser) {.top40.fra21.ent27} set widget(outport) {.top17.fra21.ent29} set widget(pe) {.top17.fra21.fra48.fra19.ent20} set widget(portent) {.top17.fra21.fra24.ent24} set widget(profileent) {.top17.fra21.fra48.fra19.ent20} set widget(profiles) {.top17.fra21.fra48.cpd18.01} set widget(profilesbut) {.top17.fra30.fra19.but22} set widget(proplabel) {.top20.lab36} set widget(remotekeysfile) {.top40.fra54.cpd57.03} set widget(remotercfile) {.top40.fra42.cpd49.03} set widget(remoteshostsfile) {.top40.fra41.cpd50.03} set widget(rev,.top17.cpd18.03) {textfield} set widget(rev,.top17.cpd31.01) {textfield} set widget(rev,.top17.ent32) {commentent} set widget(rev,.top17.fra17.lab18) {status} set widget(rev,.top17.fra17.lab19) {statusagent} set widget(rev,.top17.fra21.ent23) {comment} set widget(rev,.top17.fra21.ent25) {host} set widget(rev,.top17.fra21.ent27) {inport} set widget(rev,.top17.fra21.ent29) {outport} set widget(rev,.top17.fra21.fra24.ent18) {titleent} set widget(rev,.top17.fra21.fra24.ent19) {identityent} set widget(rev,.top17.fra21.fra24.ent20) {hostent} set widget(rev,.top17.fra21.fra24.ent21) {cfgfileent} set widget(rev,.top17.fra21.fra24.ent22) {userent} set widget(rev,.top17.fra21.fra24.ent24) {portent} set widget(rev,.top17.fra21.fra24.ent26) {commandent} set widget(rev,.top17.fra21.fra24.ent42) {subsysent} set widget(rev,.top17.fra21.fra25.02) {comprlev} set widget(rev,.top17.fra21.fra25.fra23.ent26) {identityent} set widget(rev,.top17.fra21.fra48.cpd18.01) {profiles} set widget(rev,.top17.fra21.fra48.fra19.ent20) {pe} set widget(rev,.top17.fra27.fra30.cpd31.01) {scphosts} set widget(rev,.top17.fra27.fra30.cpd32.01) {scpusers} set widget(rev,.top17.fra30.but26) {sscreenbut} set widget(rev,.top17.fra30.fra19.but20) {connectsbut} set widget(rev,.top17.fra30.fra19.but21) {scpbut} set widget(rev,.top17.fra30.fra19.but22) {profilesbut} set widget(rev,.top17.fra30.fra19.but23) {keysbut} set widget(rev,.top17.fra30.fra19.but24) {configsbut} set widget(rev,.top17.fra35.ent40) {distkeyent} set widget(rev,.top17.fra35.fra17.cpd29.01) {keydisthost} set widget(rev,.top17.fra35.fra17.ent23) {keydistkey} set widget(rev,.top17.fra35.fra17.fra17.01) {keydistuser} set widget(rev,.top17.fra35.fra17.fra33.ent35) {keydistuser} set widget(rev,.top17.fra35.fra20.fra22.01) {idents} set widget(rev,.top17.fra44.ent25) {sshbinent} set widget(rev,.top17.fra44.fra17.ent19) {xterment} set widget(rev,.top17.fra44.fra19.fra17.ent20) {scanent} set widget(rev,.top17.fra44.fra19.fra18.02) {browserent} set widget(rev,.top17.fra44.fra19.fra20.ent22) {sshent} set widget(rev,.top17.fra44.fra19.fra26.02) {keygenent} set widget(rev,.top17.fra44.fra19.fra27.02) {agentent} set widget(rev,.top17.fra44.fra19.fra28.02) {addent} set widget(rev,.top17.fra44.fra19.fra29.02) {askpassent} set widget(rev,.top17.fra44.fra19.fra32.02) {xterment} set widget(rev,.top17.fra44.fra19.fra34.ent36) {scpent} set widget(rev,.top17.fra44.fra29.ent25) {sshent} set widget(rev,.top17.fra46.fra24.fra25.01) {defsites} set widget(rev,.top17.fra46.fra26.fra27.01) {specsites} set widget(rev,.top19.cpd20.03) {viewkey} set widget(rev,.top19.cpd21.03) {hostkeyview} set widget(rev,.top20.lab36) {proplabel} set widget(rev,.top21.fra22.ent24) {askeduser} set widget(rev,.top27.fra26.01) {sspecsites} set widget(rev,.top34.fra35.cpd38.01) {scpdirsl} set widget(rev,.top34.fra35.cpd39.01) {scpfilesl} set widget(rev,.top34.fra37.cpd40.01) {scpdirsr} set widget(rev,.top34.fra37.cpd41.01) {scpfilesr} set widget(rev,.top40.fra21.ent23) {newtit} set widget(rev,.top40.fra21.ent25) {newaddr} set widget(rev,.top40.fra21.ent27) {newuser} set widget(rev,.top40.fra41.cpd50.03) {remoteshostsfile} set widget(rev,.top40.fra42.cpd49.03) {remotercfile} set widget(rev,.top40.fra54.cpd57.03) {remotekeysfile} set widget(rev,.top43.cpd44.01) {lforwards} set widget(rev,.top43.fra45.ent17) {lfhost} set widget(rev,.top43.fra45.ent34) {lfcommentent} set widget(rev,.top43.fra45.ent46) {lfin} set widget(rev,.top43.fra45.ent48) {lfout} set widget(rev,.top43.lab25) {lfcomment} set widget(rev,.top50.fra51.cpd54.01) {knownhosts} set widget(rev,.top51.cpd53.01) {rforwards} set widget(rev,.top51.fra36.01) {rfin} set widget(rev,.top51.fra36.011) {rfcommentent} set widget(rev,.top51.fra36.03) {rfout} set widget(rev,.top51.fra36.08) {rfhost} set widget(rev,.top51.fra54.ent18) {rfhost} set widget(rev,.top51.fra54.ent55) {rfin} set widget(rev,.top51.fra54.ent57) {rfout} set widget(rev,.top51.lab24) {rfcomment} set widget(rev,.top52.fra18.ent26) {identpath} set widget(rev,.top52.fra34.cpd17.01) {keylist} set widget(rev,.top53.fra20) {keyframe} set widget(rev,.top53.fra20.cpd22.01) {distkeylist} set widget(rev,.top53.fra20.fra26.ent28) {distkeyentry} set widget(rev,.top53.fra29.but31) {contbutton} set widget(rev,.top53.fra29.but33) {backbutton} set widget(rev,.top53.fra34) {hostframe} set widget(rev,.top53.fra34.cpd35.01) {distconnlist} set widget(rev,.top53.fra39) {userframe} set widget(rev,.top53.fra39.01.02) {distuserlist} set widget(rev,.top53.fra42) {confirmframe} set widget(rev,.top53.fra42.mes44) {finishmessage} set widget(rev,.top53.lab17) {messageline} set widget(rev,.vTcl.fontmgr.cpd43.03) {.vTcl.fontmgr.text} set widget(rev,.vTcl.fontmgr.fra28.cpd29.01) {.vTcl.fontmgr.listbox} set widget(rfcomment) {.top51.lab24} set widget(rfcommentent) {.top51.fra36.011} set widget(rfhost) {.top51.fra36.08} set widget(rfin) {.top51.fra36.01} set widget(rforwards) {.top51.cpd53.01} set widget(rfout) {.top51.fra36.03} set widget(scanent) {.top17.fra44.fra19.fra17.ent20} set widget(scpbut) {.top17.fra30.fra19.but21} set widget(scpdirsl) {.top34.fra35.cpd38.01} set widget(scpdirsr) {.top34.fra37.cpd40.01} set widget(scpent) {.top17.fra44.fra19.fra34.ent36} set widget(scpfilesl) {.top34.fra35.cpd39.01} set widget(scpfilesr) {.top34.fra37.cpd41.01} set widget(scphosts) {.top17.fra27.fra30.cpd31.01} set widget(scpusers) {.top17.fra27.fra30.cpd32.01} set widget(specsites) {.top17.fra46.fra26.fra27.01} set widget(sscreenbut) {.top17.fra30.but26} set widget(sshbinent) {.top17.fra44.ent25} set widget(sshent) {.top17.fra44.fra19.fra20.ent22} set widget(sspecsites) {.top27.fra26.01} set widget(status) {.top17.fra17.lab18} set widget(statusagent) {.top17.fra17.lab19} set widget(subsysent) {.top17.fra21.fra24.ent42} set widget(textfield) {.top17.cpd31.01} set widget(titleent) {.top17.fra21.fra24.ent18} set widget(userent) {.top17.fra21.fra24.ent22} set widget(userframe) {.top53.fra39} set widget(viewkey) {.top19.cpd20.03} set widget(xterment) {.top17.fra44.fra19.fra32.02} global x11forward; ################################# # USER DEFINED PROCEDURES # proc {Window} {args} { global vTcl set cmd [lindex $args 0] set name [lindex $args 1] set newname [lindex $args 2] set rest [lrange $args 3 end] if {$name == "" || $cmd == ""} {return} if {$newname == ""} { set newname $name } set exists [winfo exists $newname] switch $cmd { show { if {$exists == "1" && $name != "."} {wm deiconify $name; return} if {[info procs vTclWindow(pre)$name] != ""} { eval "vTclWindow(pre)$name $newname $rest" } if {[info procs vTclWindow$name] != ""} { eval "vTclWindow$name $newname $rest" } if {[info procs vTclWindow(post)$name] != ""} { eval "vTclWindow(post)$name $newname $rest" } } hide { if $exists {wm withdraw $newname; return} } iconify { if $exists {wm iconify $newname; return} } destroy { if $exists {destroy $newname; return} } } } ################################# # VTCL GENERATED GUI PROCEDURES # proc vTclWindow. {base {container 0}} { if {$base == ""} { set base . } ################### # CREATING WIDGETS ################### if {!$container} { wm focusmodel $base passive wm geometry $base 115x1+0+0 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm withdraw $base wm title $base "vt.tcl" } ################### # SETTING GEOMETRY ################### } proc vTclWindow.top17 {base {container 0}} { if {$base == ""} { set base .top17 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel \ -borderwidth "4" -menu "$base.m17" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 465x464 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm deiconify $base wm title $base "secpanel" } menu $base.m17 \ -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.m17 add cascade \ -menu "$base.m17.men18" -label "Program" $base.m17 add cascade \ -menu "$base.m17.men31" -label "Config" $base.m17 add cascade \ -menu "$base.m17.men19" -label "Help" menu $base.m17.men18 \ -activeborderwidth "1" -borderwidth "1" -tearoff "0" $base.m17.men18 add command \ -command "historyman show" -label "Command history" $base.m17.men18 add command \ -command "command_trace view" -label "View trace window" $base.m17.men18 add separator $base.m17.men18 add command \ -command "do_exit" -label "Exit" menu $base.m17.men19 \ -activeborderwidth "1" -borderwidth "1" -tearoff "0" $base.m17.men19 add command \ -label "Help Index (no help yet)" $base.m17.men19 add cascade \ -menu "$base.m17.men19.men17" -label "Update checks" $base.m17.men19 add separator $base.m17.men19 add command \ -command "about" -label "About secpanel" menu $base.m17.men19.men20 \ -activeborderwidth "1" -borderwidth "1" -tearoff "0" menu $base.m17.men19.men17 \ -activeborderwidth "1" -borderwidth "1" -tearoff "0" $base.m17.men19.men17 add command \ -command "check_sources ssh" -label "Check for SSH updates" \ -state "disabled" $base.m17.men19.men17 add command \ -command "check_sources sp" -label "See secpanel homepage" menu $base.m17.men31 \ -activeborderwidth "1" -borderwidth "1" -tearoff "0" $base.m17.men31 add checkbutton \ -variable "configs(protectdata)" -command "save_globals protectdata" \ -label "Protect Data (not yet fully funct.)" $base.m17.men31 add separator $base.m17.men31 add command \ -command "colorman 1" -label "Program colors" $base.m17.men31 add command \ -command "fontman show" -label "Program fonts" $base.m17.men31 add checkbutton \ -variable "configs(wingeom)" -command "save_globals geom" \ -label "Remember window positions" $base.m17.men31 add checkbutton \ -variable "configs(startsat)" -command "save_globals startsat" \ -label "Start into sat mode" frame $base.fra21 \ -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" frame $base.fra21.fra23 \ -height "75" -highlightcolor "#000000" -width "125" checkbutton $base.fra21.fra23.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "No agent forwarding" -variable "noagentforward" checkbutton $base.fra21.fra23.02 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "No X11 forwarding" -variable "x11forward" checkbutton $base.fra21.fra23.che17 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "No priv. source port" -variable "nopriv" checkbutton $base.fra21.fra23.che20 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Verbose" -variable "verbose" checkbutton $base.fra21.fra23.che21 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Quiet" \ -variable "quiet" checkbutton $base.fra21.fra23.che22 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Fork into background" -variable "fork" checkbutton $base.fra21.fra23.che39 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Strict hostkey check" -variable "stricthost" checkbutton $base.fra21.fra23.che29 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Wait after connection" -variable "connwait" checkbutton $base.fra21.fra23.che30 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Terminal iconified" -variable "termicon" frame $base.fra21.fra24 \ -height "75" -highlightcolor "#000000" -width "125" label $base.fra21.fra24.lab17 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Title:" entry $base.fra21.fra24.ent18 \ -borderwidth "1" -highlightcolor "#000000" -width "15" label $base.fra21.fra24.lab19 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -relief "raised" -text "Host:" entry $base.fra21.fra24.ent20 \ -borderwidth "1" -highlightcolor "#000000" -width "15" label $base.fra21.fra24.lab21 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -relief "raised" -text "User:" entry $base.fra21.fra24.ent22 \ -borderwidth "1" -highlightcolor "#000000" -width "15" label $base.fra21.fra24.lab23 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -relief "raised" -text "Port:" entry $base.fra21.fra24.ent24 \ -borderwidth "1" -highlightcolor "#000000" -width "15" label $base.fra21.fra24.lab25 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -relief "raised" -text "Exec:" entry $base.fra21.fra24.ent26 \ -borderwidth "1" -highlightcolor "#000000" -width "15" checkbutton $base.fra21.fra24.che17 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Ask" \ -variable "askuserspec" label $base.fra21.fra24.lab41 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -relief "raised" -text "Subsys:" entry $base.fra21.fra24.ent42 \ -borderwidth "1" -highlightcolor "#000000" -width "15" checkbutton $base.fra21.fra24.che43 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "No Exec" -variable "noexec" label $base.fra21.fra24.lab18 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -text "Identity:" entry $base.fra21.fra24.ent19 \ -borderwidth "1" -highlightcolor "#000000" -width "15" label $base.fra21.fra24.lab20 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -text "Cfg-file:" entry $base.fra21.fra24.ent21 \ -borderwidth "1" -highlightcolor "#000000" -width "15" button $base.fra21.fra24.but22 \ -command "choosefile {} {} {} identityent" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "groove" button $base.fra21.fra24.but23 \ -command "choosefile {} {} {} cfgfileent" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "groove" label $base.fra21.fra24.lab24 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Algo:" menubutton $base.fra21.fra24.men25 \ -highlightcolor "#000000" -indicatoron "1" \ -menu "$base.fra21.fra24.men25.01" -padx "4" -pady "3" \ -relief "groove" -text "idea" -textvariable "algo" menu $base.fra21.fra24.men25.01 \ -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.fra21.fra24.men25.01 add radiobutton \ -value "default" -variable "algo" -label "default" $base.fra21.fra24.men25.01 add radiobutton \ -value "idea" -variable "algo" -label "idea" $base.fra21.fra24.men25.01 add radiobutton \ -value "des" -variable "algo" -label "des" $base.fra21.fra24.men25.01 add radiobutton \ -value "3des" -variable "algo" -label "3des" $base.fra21.fra24.men25.01 add radiobutton \ -value "blowfish" -variable "algo" -label "blowfish" $base.fra21.fra24.men25.01 add radiobutton \ -value "arcfour" -variable "algo" -label "arcfour" $base.fra21.fra24.men25.01 add radiobutton \ -value "none" -variable "algo" -label "none" checkbutton $base.fra21.fra24.che26 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Compression" -variable "compress" scale $base.fra21.fra24.sca27 \ -borderwidth "1" -highlightcolor "#000000" -orient "horizontal" \ -showvalue "0" -sliderlength "20" -sliderrelief "groove" -to "9.0" \ -troughcolor "#e2e2de" -variable "compressval" label $base.fra21.fra24.lab28 \ -borderwidth "0" -highlightcolor "#000000" -text "0" \ -textvariable "compressval" frame $base.fra21.fra26 \ -height "75" -highlightcolor "#000000" -width "125" button $base.fra21.fra26.01 \ -anchor "w" -command "open_forwardings l" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "groove" -text "Local forwards" button $base.fra21.fra26.02 \ -anchor "w" -command "open_forwardings r" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "groove" -text "Remote forwards" checkbutton $base.fra21.fra26.03 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Run as gateway" -variable "gateway" frame $base.fra21.fra48 \ -borderwidth "2" -relief "groove" -height "75" \ -highlightcolor "#000000" -width "110" frame $base.fra21.fra48.cpd18 \ -relief "raised" -height "30" -highlightcolor "#000000" -width "3" listbox $base.fra21.fra48.cpd18.01 \ -borderwidth "1" -height "3" -highlightcolor "#000000" -width "10" \ -xscrollcommand "$base.fra21.fra48.cpd18.02 set" \ -yscrollcommand "$base.fra21.fra48.cpd18.03 set" bind $base.fra21.fra48.cpd18.01 { load_profile ssh } scrollbar $base.fra21.fra48.cpd18.02 \ -borderwidth "1" -command "$base.fra21.fra48.cpd18.01 xview" \ -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" \ -troughcolor "#e2e2de" -width "10" scrollbar $base.fra21.fra48.cpd18.03 \ -borderwidth "1" -command "$base.fra21.fra48.cpd18.01 yview" \ -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" \ -width "10" frame $base.fra21.fra48.fra19 \ -height "75" -highlightcolor "#000000" -width "125" entry $base.fra21.fra48.fra19.ent20 \ -borderwidth "1" -highlightcolor "#000000" -width "2" label $base.fra21.fra48.fra19.lab21 \ -borderwidth "1" -highlightcolor "#000000" -text "Profile Name" frame $base.fra21.fra48.fra40 \ -height "75" -highlightcolor "#000000" -width "125" button $base.fra21.fra48.fra40.but41 \ -command "save_profile" -highlightcolor "#000000" -padx "9" -pady "3" \ -relief "groove" -text "Save" button $base.fra21.fra48.fra40.but42 \ -command "delete_profile" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Delete" button $base.fra21.fra48.fra40.but43 \ -command "load_profile ssh" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Load" button $base.fra21.fra48.fra40.but44 \ -command "clear_profiles" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "New" frame $base.fra21.fra35 \ -height "75" -highlightcolor "#000000" -width "125" radiobutton $base.fra21.fra35.rad36 \ -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "IPv4" \ -value "4" -variable "ipverconnect" radiobutton $base.fra21.fra35.rad37 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "IPv6" \ -value "6" -variable "ipverconnect" radiobutton $base.fra21.fra35.rad38 \ -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "SSH 1" \ -value "1" -variable "sshverconnect" radiobutton $base.fra21.fra35.rad39 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "SSH 2" \ -value "2" -variable "sshverconnect" frame $base.fra30 \ -height "75" -highlightcolor "#000000" -width "125" frame $base.fra30.fra19 \ -height "75" -highlightcolor "#000000" -width "125" button $base.fra30.fra19.but20 \ -command "changetab connect" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" bind $base.fra30.fra19.but20 { showstatus "Lists of configured SSH connections" } bind $base.fra30.fra19.but20 { showstatus "" } button $base.fra30.fra19.but22 \ -command "changetab ssh" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" bind $base.fra30.fra19.but22 { showstatus "Manage connection profiles" } bind $base.fra30.fra19.but22 { showstatus "" } button $base.fra30.fra19.but23 \ -command "changetab key" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" bind $base.fra30.fra19.but23 { showstatus "Manage your keypairs" } bind $base.fra30.fra19.but23 { showstatus "" } button $base.fra30.fra19.but24 \ -command "changetab terminal" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" bind $base.fra30.fra19.but24 { showstatus "Configurations" } bind $base.fra30.fra19.but24 { showstatus "" } button $base.fra30.but26 \ -borderwidth "0" -command "changetab small" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "flat" bind $base.fra30.but26 { showstatus "Switch to satellite GUI" } bind $base.fra30.but26 { showstatus "" } frame $base.fra35 \ -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" frame $base.fra35.fra17 \ -borderwidth "2" -relief "groove" -height "75" \ -highlightcolor "#000000" -width "125" button $base.fra35.fra17.but17 \ -command "keygen 0" -highlightcolor "#000000" -padx "9" -pady "3" \ -relief "groove" -text "Manage keypairs" button $base.fra35.fra17.but19 \ -command "keygen dist" -highlightcolor "#000000" -relief "groove" \ -text "Distribute public keys" button $base.fra35.fra17.but18 \ -command "hostkey edit" -highlightcolor "#000000" -padx "9" -pady "3" \ -relief "groove" -text "Manage hostkeys" label $base.fra35.fra17.lab19 \ -anchor "w" -borderwidth "0" -highlightcolor "#000000" \ -text "Key handling" -font "helvetica 10 bold" frame $base.fra35.fra20 \ -borderwidth "2" -relief "groove" -height "75" \ -highlightcolor "#000000" -width "125" button $base.fra35.fra20.but22 \ -command "manage_agent launch" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Launch agent" button $base.fra35.fra20.but26 \ -command "manage_agent remident" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Remove identity" checkbutton $base.fra35.fra20.che28 \ -borderwidth "1" -command "save_globals agent" \ -highlightcolor "#000000" -text "Launch agent at startup" \ -variable "launcher" frame $base.fra35.fra20.fra22 \ -borderwidth "1" -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra35.fra20.fra22.01 \ -borderwidth "1" -height "3" -highlightcolor "#000000" -width "18" \ -xscrollcommand "$base.fra35.fra20.fra22.02 set" \ -yscrollcommand "$base.fra35.fra20.fra22.03 set" scrollbar $base.fra35.fra20.fra22.02 \ -borderwidth "1" -command "$base.fra35.fra20.fra22.01 xview" \ -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" \ -troughcolor "#e2e2de" -width "10" scrollbar $base.fra35.fra20.fra22.03 \ -borderwidth "1" -command "$base.fra35.fra20.fra22.01 yview" \ -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" \ -width "10" button $base.fra35.fra20.but20 \ -command "manage_agent addident" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Add identity" button $base.fra35.fra20.but17 \ -command "manage_agent kill" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Kill agent" label $base.fra35.fra20.lab28 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "SSH-Agent" -font "helvetica 10 bold" button $base.fra35.fra20.but18 \ -command "manage_agent chdef" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Set def. ident." button $base.fra35.fra20.but188 \ -command "manage_agent rmdef" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Remove def. ident." button $base.fra35.fra20.but30 \ -command "manage_agent info" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Agent info" frame $base.fra44 \ -borderwidth "1" -height "75" -highlightcolor "#000000" frame $base.fra44.fra27 \ -relief "groove" -height "75" -highlightcolor "#000000" button $base.fra44.fra27.but28 \ -command "save_globals bins" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Save" frame $base.fra44.fra19 \ -height "75" -highlightcolor "#000000" frame $base.fra44.fra19.fra20 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra20.lab21 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "SSH" entry $base.fra44.fra19.fra20.ent22 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra20.but23 \ -borderwidth "0" -command "browsebin ssh" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra26 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra26.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "SSH-Keygen" entry $base.fra44.fra19.fra26.02 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra26.03 \ -borderwidth "0" -command "browsebin keygen" \ -highlightcolor "#000000" -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra27 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra27.01 \ -anchor "w" -highlightcolor "#000000" -text "SSH-Agent" entry $base.fra44.fra19.fra27.02 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra27.03 \ -borderwidth "0" -command "browsebin agent" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra28 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra28.01 \ -anchor "w" -highlightcolor "#000000" -text "SSH-Add" entry $base.fra44.fra19.fra28.02 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra28.03 \ -borderwidth "0" -command "browsebin add" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra29 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra29.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "SSH-Askpass" entry $base.fra44.fra19.fra29.02 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra29.03 \ -borderwidth "0" -command "browsebin askpass" \ -highlightcolor "#000000" -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra32 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra32.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "XTerminal" menubutton $base.fra44.fra19.fra32.men35 \ -highlightcolor "#000000" -indicatoron "1" \ -menu "$base.fra44.fra19.fra32.men35.01" -padx "4" -pady "3" \ -relief "groove" -textvariable "configs(termver)" menu $base.fra44.fra19.fra32.men35.01 \ -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" frame $base.fra44.fra19.fra30 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra30.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "SFTP" menubutton $base.fra44.fra19.fra30.men34 \ -indicatoron "1" -menu "$base.fra44.fra19.fra30.men34.m" -padx "4" \ -pady "3" -relief "groove" -textvariable "configs(sftpbin)" menu $base.fra44.fra19.fra30.men34.m \ -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" frame $base.fra44.fra19.fra18 \ -borderwidth "1" -height "75" -highlightcolor "#000000" label $base.fra44.fra19.fra18.01 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "WWW browser" entry $base.fra44.fra19.fra18.02 \ -borderwidth "1" -highlightcolor "#000000" button $base.fra44.fra19.fra18.03 \ -borderwidth "0" -command "browsebin browser" \ -highlightcolor "#000000" -padx "9" -pady "3" -relief "flat" frame $base.fra44.fra19.fra34 \ -relief "groove" -height "75" -width "125" label $base.fra44.fra19.fra34.lab35 \ -borderwidth "0" -relief "raised" -text "SCP" -anchor "w" entry $base.fra44.fra19.fra34.ent36 \ -borderwidth "1" button $base.fra44.fra19.fra34.but34 \ -borderwidth "0" -command "browsebin scp" -highlightcolor "#000000" \ -padx "9" -pady "3" -relief "flat" label $base.fra44.lab30 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Programs used by secpanel" -font "helvetica 10 bold" frame $base.fra46 \ -borderwidth "1" -height "75" -highlightcolor "#000000" frame $base.fra46.fra26 \ -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" frame $base.fra46.fra26.fra27 \ -relief "raised" -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra46.fra26.fra27.01 \ -borderwidth "1" -height "6" -highlightcolor "#000000" \ -selectmode "extended" \ -xscrollcommand "$base.fra46.fra26.fra27.02 set" \ -yscrollcommand "$base.fra46.fra26.fra27.03 set" bind $base.fra46.fra26.fra27.01 { set li [.top17.fra46.fra26.fra27.01 nearest %y] .top17.fra46.fra26.fra27.01 selection clear 0 end .top17.fra46.fra26.fra27.01 activate $li .top17.fra46.fra26.fra27.01 selection set $li showmenu } bind $base.fra46.fra26.fra27.01 { connect } bind $base.fra46.fra26.fra27.01 { showstatus "Right click mouse to handle entries" } bind $base.fra46.fra26.fra27.01 { showstatus "" } scrollbar $base.fra46.fra26.fra27.02 \ -borderwidth "1" -command "$base.fra46.fra26.fra27.01 xview" \ -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" \ -troughcolor "#e2e2de" -width "10" scrollbar $base.fra46.fra26.fra27.03 \ -borderwidth "1" -command "$base.fra46.fra26.fra27.01 yview" \ -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" \ -width "10" frame $base.fra46.fra26.fra29 \ -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" frame $base.fra46.fra26.fra29.fra28 \ -height "75" -highlightcolor "#000000" -width "125" button $base.fra46.fra26.fra29.fra28.but29 \ -command "newconn 1" -highlightcolor "#000000" -padx "9" -pady "3" \ -relief "groove" -text "New" button $base.fra46.fra26.fra29.fra28.but30 \ -command "propconn specsites" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Edit" button $base.fra46.fra26.fra29.fra28.but31 \ -command "delconn" -highlightcolor "#000000" -padx "9" -pady "3" \ -relief "groove" -text "Delete" frame $base.fra46.fra26.fra29.fra36 \ -relief "groove" -height "75" -width "125" button $base.fra46.fra26.fra29.fra36.but37 \ -command "connect specsites" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Connect" button $base.fra46.fra26.fra29.fra36.but38 \ -command "connect multi" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -text "Multi" button $base.fra46.fra26.fra29.fra36.but39 \ -command "connect custom" -highlightcolor "#000000" -padx "9" \ -pady "3" -relief "groove" -state "disabled" -text "Custom" button $base.fra46.fra26.fra29.fra36.but34 \ -command "connect_sftp" -relief "groove" -text "SFTP" label $base.fra46.fra26.lab34 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" \ -text "Connections" frame $base.fra17 \ -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" label $base.fra17.lab18 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -width "30" label $base.fra17.lab19 \ -anchor "w" -borderwidth "1" -highlightcolor "#000000" -width "30" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 1 -weight 1 grid rowconf $base.fra21 0 -weight 1 grid columnconf $base.fra21 0 -weight 1 grid columnconf $base.fra21 1 -weight 1 grid $base.fra21.fra23 \ -in $base.fra21 -column "0" -row "1" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "new" grid $base.fra21.fra23.01 \ -in $base.fra21.fra23 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.02 \ -in $base.fra21.fra23 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che17 \ -in $base.fra21.fra23 -column "0" -row "3" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che20 \ -in $base.fra21.fra23 -column "0" -row "6" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che21 \ -in $base.fra21.fra23 -column "0" -row "5" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che22 \ -in $base.fra21.fra23 -column "0" -row "4" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che39 \ -in $base.fra21.fra23 -column "0" -row "2" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che29 \ -in $base.fra21.fra23 -column "0" -row "7" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra23.che30 \ -in $base.fra21.fra23 -column "0" -row "8" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24 \ -in $base.fra21 -column "1" -row "1" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "new" grid columnconf $base.fra21.fra24 1 -weight 1 grid $base.fra21.fra24.lab17 \ -in $base.fra21.fra24 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent18 \ -in $base.fra21.fra24 -column "1" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab19 \ -in $base.fra21.fra24 -column "0" -row "2" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent20 \ -in $base.fra21.fra24 -column "1" -row "2" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab21 \ -in $base.fra21.fra24 -column "0" -row "3" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent22 \ -in $base.fra21.fra24 -column "1" -row "3" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab23 \ -in $base.fra21.fra24 -column "0" -row "4" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent24 \ -in $base.fra21.fra24 -column "1" -row "4" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab25 \ -in $base.fra21.fra24 -column "0" -row "5" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent26 \ -in $base.fra21.fra24 -column "1" -row "5" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.che17 \ -in $base.fra21.fra24 -column "2" -row "3" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab41 \ -in $base.fra21.fra24 -column "0" -row "6" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent42 \ -in $base.fra21.fra24 -column "1" -row "6" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.che43 \ -in $base.fra21.fra24 -column "2" -row "5" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab18 \ -in $base.fra21.fra24 -column "0" -row "7" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent19 \ -in $base.fra21.fra24 -column "1" -row "7" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab20 \ -in $base.fra21.fra24 -column "0" -row "8" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.ent21 \ -in $base.fra21.fra24 -column "1" -row "8" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.but22 \ -in $base.fra21.fra24 -column "2" -row "7" -columnspan "1" \ -rowspan "1" -sticky "w" grid $base.fra21.fra24.but23 \ -in $base.fra21.fra24 -column "2" -row "8" -columnspan "1" \ -rowspan "1" -sticky "w" grid $base.fra21.fra24.lab24 \ -in $base.fra21.fra24 -column "0" -row "9" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.men25 \ -in $base.fra21.fra24 -column "1" -row "9" -columnspan "2" \ -rowspan "1" -padx "2" -sticky "ew" grid $base.fra21.fra24.che26 \ -in $base.fra21.fra24 -column "0" -row "10" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.sca27 \ -in $base.fra21.fra24 -column "2" -row "10" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra24.lab28 \ -in $base.fra21.fra24 -column "1" -row "10" -columnspan "1" \ -rowspan "1" -sticky "e" grid $base.fra21.fra26 \ -in $base.fra21 -column "1" -row "3" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra21.fra26 0 -weight 1 grid rowconf $base.fra21.fra26 0 -weight 1 grid $base.fra21.fra26.01 \ -in $base.fra21.fra26 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra26.02 \ -in $base.fra21.fra26 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra26.03 \ -in $base.fra21.fra26 -column "3" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48 \ -in $base.fra21 -column "0" -row "0" -columnspan "2" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra21.fra48 1 -weight 1 grid columnconf $base.fra21.fra48 2 -weight 1 grid columnconf $base.fra21.fra48 3 -weight 1 grid rowconf $base.fra21.fra48 1 -weight 1 grid $base.fra21.fra48.cpd18 \ -in $base.fra21.fra48 -column "2" -row "0" -columnspan "2" \ -rowspan "2" -sticky "nesw" grid columnconf $base.fra21.fra48.cpd18 0 -weight 1 grid rowconf $base.fra21.fra48.cpd18 0 -weight 1 grid $base.fra21.fra48.cpd18.01 \ -in $base.fra21.fra48.cpd18 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "nesw" grid $base.fra21.fra48.cpd18.02 \ -in $base.fra21.fra48.cpd18 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48.cpd18.03 \ -in $base.fra21.fra48.cpd18 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ns" grid $base.fra21.fra48.fra19 \ -in $base.fra21.fra48 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "new" grid columnconf $base.fra21.fra48.fra19 0 -weight 1 grid $base.fra21.fra48.fra19.ent20 \ -in $base.fra21.fra48.fra19 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "new" grid $base.fra21.fra48.fra19.lab21 \ -in $base.fra21.fra48.fra19 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48.fra40 \ -in $base.fra21.fra48 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "n" grid $base.fra21.fra48.fra40.but41 \ -in $base.fra21.fra48.fra40 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48.fra40.but42 \ -in $base.fra21.fra48.fra40 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48.fra40.but43 \ -in $base.fra21.fra48.fra40 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra48.fra40.but44 \ -in $base.fra21.fra48.fra40 -column "1" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra35 \ -in $base.fra21 -column "0" -row "3" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra21.fra35 0 -weight 1 grid columnconf $base.fra21.fra35 1 -weight 1 grid rowconf $base.fra21.fra35 0 -weight 1 grid rowconf $base.fra21.fra35 1 -weight 1 grid $base.fra21.fra35.rad36 \ -in $base.fra21.fra35 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra35.rad37 \ -in $base.fra21.fra35 -column "1" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra35.rad38 \ -in $base.fra21.fra35 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra21.fra35.rad39 \ -in $base.fra21.fra35 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra30 \ -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "2" \ -pady "2" -sticky "ew" grid columnconf $base.fra30 0 -weight 1 grid columnconf $base.fra30 1 -weight 1 grid $base.fra30.fra19 \ -in $base.fra30 -column "0" -row "0" -columnspan "1" -rowspan "1" \ -sticky "w" grid $base.fra30.fra19.but20 \ -in $base.fra30.fra19 -column "0" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra30.fra19.but22 \ -in $base.fra30.fra19 -column "2" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra30.fra19.but23 \ -in $base.fra30.fra19 -column "3" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra30.fra19.but24 \ -in $base.fra30.fra19 -column "4" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra30.but26 \ -in $base.fra30 -column "1" -row "0" -columnspan "1" -rowspan "1" \ -sticky "e" grid rowconf $base.fra35 1 -weight 1 grid columnconf $base.fra35 0 -weight 1 grid columnconf $base.fra35 1 -weight 1 grid $base.fra35.fra17 \ -in $base.fra35 -column "0" -row "1" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra35.fra17 0 -weight 1 grid rowconf $base.fra35.fra17 5 -weight 1 grid rowconf $base.fra35.fra17 7 -weight 1 grid $base.fra35.fra17.but17 \ -in $base.fra35.fra17 -column "0" -row "2" -columnspan "2" \ -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra35.fra17.but19 \ -in $base.fra35.fra17 -column "0" -row "3" -columnspan "1" \ -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra35.fra17.but18 \ -in $base.fra35.fra17 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra35.fra17.lab19 \ -in $base.fra35.fra17 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra35.fra20 \ -in $base.fra35 -column "1" -row "1" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra35.fra20 0 -weight 1 grid rowconf $base.fra35.fra20 6 -weight 1 grid $base.fra35.fra20.but22 \ -in $base.fra35.fra20 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.but26 \ -in $base.fra35.fra20 -column "0" -row "7" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.che28 \ -in $base.fra35.fra20 -column "0" -row "2" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.fra22 \ -in $base.fra35.fra20 -column "0" -row "6" -columnspan "1" \ -rowspan "1" -sticky "nesw" grid columnconf $base.fra35.fra20.fra22 0 -weight 1 grid rowconf $base.fra35.fra20.fra22 0 -weight 1 grid $base.fra35.fra20.fra22.01 \ -in $base.fra35.fra20.fra22 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "nesw" grid $base.fra35.fra20.fra22.02 \ -in $base.fra35.fra20.fra22 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.fra22.03 \ -in $base.fra35.fra20.fra22 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ns" grid $base.fra35.fra20.but20 \ -in $base.fra35.fra20 -column "0" -row "3" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.but17 \ -in $base.fra35.fra20 -column "0" -row "9" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.lab28 \ -in $base.fra35.fra20 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -padx "2" -pady "2" -sticky "new" grid $base.fra35.fra20.but18 \ -in $base.fra35.fra20 -column "0" -row "4" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.but188 \ -in $base.fra35.fra20 -column "0" -row "5" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra35.fra20.but30 \ -in $base.fra35.fra20 -column "0" -row "8" -columnspan "1" \ -rowspan "1" -sticky "ew" grid rowconf $base.fra44 2 -weight 1 grid columnconf $base.fra44 0 -weight 1 grid rowconf $base.fra44 2 -weight 1 grid columnconf $base.fra44 0 -weight 1 grid $base.fra44.fra27 \ -in $base.fra44 -column "0" -row "3" -columnspan "2" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "4" -pady "2" -sticky "esw" grid columnconf $base.fra44.fra27 0 -weight 1 grid $base.fra44.fra27.but28 \ -in $base.fra44.fra27 -column "0" -row "2" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19 \ -in $base.fra44 -column "0" -row "2" -columnspan "2" -rowspan "1" \ -ipady "10" -padx "2" -pady "10" -sticky "new" grid columnconf $base.fra44.fra19 0 -weight 1 grid columnconf $base.fra44.fra19 1 -weight 1 grid $base.fra44.fra19.fra20 \ -in $base.fra44.fra19 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra20 0 -weight 1 grid $base.fra44.fra19.fra20.lab21 \ -in $base.fra44.fra19.fra20 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra20.ent22 \ -in $base.fra44.fra19.fra20 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra20.but23 \ -in $base.fra44.fra19.fra20 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra26 \ -in $base.fra44.fra19 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra26 0 -weight 1 grid $base.fra44.fra19.fra26.01 \ -in $base.fra44.fra19.fra26 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra26.02 \ -in $base.fra44.fra19.fra26 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra26.03 \ -in $base.fra44.fra19.fra26 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra27 \ -in $base.fra44.fra19 -column "0" -row "2" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra27 0 -weight 1 grid $base.fra44.fra19.fra27.01 \ -in $base.fra44.fra19.fra27 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra27.02 \ -in $base.fra44.fra19.fra27 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra27.03 \ -in $base.fra44.fra19.fra27 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra28 \ -in $base.fra44.fra19 -column "1" -row "1" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra28 0 -weight 1 grid $base.fra44.fra19.fra28.01 \ -in $base.fra44.fra19.fra28 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra28.02 \ -in $base.fra44.fra19.fra28 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra28.03 \ -in $base.fra44.fra19.fra28 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra29 \ -in $base.fra44.fra19 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra29 0 -weight 1 grid $base.fra44.fra19.fra29.01 \ -in $base.fra44.fra19.fra29 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra29.02 \ -in $base.fra44.fra19.fra29 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra29.03 \ -in $base.fra44.fra19.fra29 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra32 \ -in $base.fra44.fra19 -column "0" -row "4" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra32 0 -weight 1 grid $base.fra44.fra19.fra32.01 \ -in $base.fra44.fra19.fra32 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra32.men35 \ -in $base.fra44.fra19.fra32 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -padx "2" -sticky "ew" grid $base.fra44.fra19.fra30 \ -in $base.fra44.fra19 -column "1" -row "4" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra30 0 -weight 1 grid $base.fra44.fra19.fra30.01 \ -in $base.fra44.fra19.fra30 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra30.men34 \ -in $base.fra44.fra19.fra30 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra18 \ -in $base.fra44.fra19 -column "1" -row "2" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra18 0 -weight 1 grid $base.fra44.fra19.fra18.01 \ -in $base.fra44.fra19.fra18 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra18.02 \ -in $base.fra44.fra19.fra18 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra18.03 \ -in $base.fra44.fra19.fra18 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.fra19.fra34 \ -in $base.fra44.fra19 -column "0" -row "3" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "ew" grid columnconf $base.fra44.fra19.fra34 0 -weight 1 grid $base.fra44.fra19.fra34.lab35 \ -in $base.fra44.fra19.fra34 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra34.ent36 \ -in $base.fra44.fra19.fra34 -column "0" -row "1" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra44.fra19.fra34.but34 \ -in $base.fra44.fra19.fra34 -column "1" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra44.lab30 \ -in $base.fra44 -column "0" -row "0" -columnspan "2" -rowspan "1" \ -padx "2" -pady "2" -sticky "new" grid $base.fra46 \ -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" \ -sticky "nesw" grid columnconf $base.fra46 0 -weight 1 grid rowconf $base.fra46 0 -weight 1 grid $base.fra46.fra26 \ -in $base.fra46 -column "0" -row "0" -columnspan "1" -rowspan "1" \ -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra46.fra26 0 -weight 1 grid rowconf $base.fra46.fra26 1 -weight 1 grid $base.fra46.fra26.fra27 \ -in $base.fra46.fra26 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra46.fra26.fra27 0 -weight 1 grid rowconf $base.fra46.fra26.fra27 0 -weight 1 grid $base.fra46.fra26.fra27.01 \ -in $base.fra46.fra26.fra27 -column "0" -row "0" -columnspan "1" \ -rowspan "1" -sticky "nesw" grid $base.fra46.fra26.fra27.02 \ -in $base.fra46.fra26.fra27 -column "0" -row "1" -columnspan "1" \ -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra27.03 \ -in $base.fra46.fra26.fra27 -column "1" -row "0" -columnspan "1" \ -rowspan "1" -sticky "ns" grid $base.fra46.fra26.fra29 \ -in $base.fra46.fra26 -column "1" -row "1" -columnspan "1" \ -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ns" grid rowconf $base.fra46.fra26.fra29 4 -weight 1 grid $base.fra46.fra26.fra29.fra28 \ -in $base.fra46.fra26.fra29 -column "0" -row "4" -columnspan "1" \ -rowspan "1" -sticky "esw" grid columnconf $base.fra46.fra26.fra29.fra28 0 -weight 1 grid $base.fra46.fra26.fra29.fra28.but29 \ -in $base.fra46.fra26.fra29.fra28 -column "0" -row "0" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra28.but30 \ -in $base.fra46.fra26.fra29.fra28 -column "0" -row "1" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra28.but31 \ -in $base.fra46.fra26.fra29.fra28 -column "0" -row "2" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra36 \ -in $base.fra46.fra26.fra29 -column "0" -row "0" -columnspan "1" \ -rowspan "1" grid $base.fra46.fra26.fra29.fra36.but37 \ -in $base.fra46.fra26.fra29.fra36 -column "0" -row "0" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra36.but38 \ -in $base.fra46.fra26.fra29.fra36 -column "0" -row "1" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra36.but39 \ -in $base.fra46.fra26.fra29.fra36 -column "0" -row "2" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.fra29.fra36.but34 \ -in $base.fra46.fra26.fra29.fra36 -column "0" -row "3" \ -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra46.fra26.lab34 \ -in $base.fra46.fra26 -column "0" -row "0" -columnspan "2" \ -rowspan "1" -sticky "ew" grid $base.fra17 \ -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -padx "2" \ -pady "2" -sticky "ew" grid columnconf $base.fra17 0 -weight 1 grid columnconf $base.fra17 1 -weight 1 grid $base.fra17.lab18 \ -in $base.fra17 -column "0" -row "0" -columnspan "1" -rowspan "1" \ -sticky "ew" grid $base.fra17.lab19 \ -in $base.fra17 -column "1" -row "0" -columnspan "1" -rowspan "1" \ -sticky "ew" } proc vTclWindow.top18 {base {container 0}} { if {$base == ""} { set base .top18 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "10" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 250x150 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Confirm" } message $base.mes19 -aspect "300" -padx "5" -pady "2" frame $base.fra20 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" button $base.fra20.but21 -command "set questres 1" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Yes" button $base.fra20.but22 -command "set questres 0" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "No" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.mes19 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra20 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid columnconf $base.fra20 0 -weight 1 grid columnconf $base.fra20 1 -weight 1 grid $base.fra20.but21 -in $base.fra20 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra20.but22 -in $base.fra20 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" } proc vTclWindow.top19 {base {container 0}} { if {$base == ""} { set base .top19 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -menu "$base.m17" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 666x183 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - View key" } label $base.lab19 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Fingerprint" label $base.lab39 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -relief "raised" -text "Bubblebabble digest" button $base.but41 -command "Window destroy .top19" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Close" menu $base.m17 -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" frame $base.fra22 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" label $base.fra22.lab23 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -relief "raised" label $base.fra22.lab24 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -relief "raised" text $base.tex17 -borderwidth "0" -height "1" -highlightcolor "#000000" -width "8" text $base.tex18 -borderwidth "0" -cursor "fleur" -height "1" -highlightcolor "#000000" -width "8" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 2 -weight 1 grid rowconf $base 4 -weight 1 grid $base.lab19 -in $base -column "0" -row "1" -columnspan "2" -rowspan "1" -padx "2" -sticky "ew" grid $base.lab39 -in $base -column "0" -row "3" -columnspan "2" -rowspan "1" -padx "2" -sticky "ew" grid $base.but41 -in $base -column "0" -row "5" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra22 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid columnconf $base.fra22 0 -weight 1 grid columnconf $base.fra22 1 -weight 1 grid $base.fra22.lab23 -in $base.fra22 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra22.lab24 -in $base.fra22 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.tex17 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "nesw" grid $base.tex18 -in $base -column "0" -row "4" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "nesw" } proc vTclWindow.top20 {base {container 0}} { if {$base == ""} { set base .top20 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 292x175 wm maxsize $base 785 570 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Change Key-Properties" } frame $base.fra21 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" label $base.fra21.lab25 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Old password:" entry $base.fra21.ent26 -borderwidth "1" -highlightcolor "#000000" -show "*" label $base.fra21.lab27 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "New password:" label $base.fra21.lab28 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "New password:" entry $base.fra21.ent30 -borderwidth "1" -highlightcolor "#000000" -show "*" entry $base.fra21.ent31 -borderwidth "1" -highlightcolor "#000000" -show "*" label $base.fra21.lab19 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Comment:" entry $base.fra21.ent20 -borderwidth "1" -highlightcolor "#000000" frame $base.fra22 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" button $base.fra22.but23 -command "Window destroy .top20" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Cancel" button $base.fra22.but33 -command "keygen chpwd" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Save" label $base.lab35 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Changing properties of" label $base.lab36 -anchor "w" -borderwidth "1" -highlightcolor "#000000" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 2 -weight 1 grid $base.fra21 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra21 1 -weight 1 grid $base.fra21.lab25 -in $base.fra21 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra21.ent26 -in $base.fra21 -column "1" -row "0" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra21.lab27 -in $base.fra21 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra21.lab28 -in $base.fra21 -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra21.ent30 -in $base.fra21 -column "1" -row "1" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra21.ent31 -in $base.fra21 -column "1" -row "2" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra21.lab19 -in $base.fra21 -column "0" -row "3" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra21.ent20 -in $base.fra21 -column "1" -row "3" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra22 -in $base -column "0" -row "3" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid $base.fra22.but23 -in $base.fra22 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.fra22.but33 -in $base.fra22 -column "1" -row "0" -columnspan "1" -rowspan "1" grid $base.lab35 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.lab36 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" } proc vTclWindow.top21 {base {container 0}} { if {$base == ""} { set base .top21 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 199x124 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Ask for user" } frame $base.fra22 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" message $base.fra22.mes23 -anchor "w" -aspect "300" -padx "5" -pady "2" -text "Give login to use for this connection:" entry $base.fra22.ent24 -borderwidth "1" -highlightcolor "#000000" bind $base.fra22.ent24 { getuser } button $base.but25 -command "set userres #####" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Cancel" button $base.but26 -command "getuser" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Connect" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid columnconf $base 1 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra22 -in $base -column "0" -row "0" -columnspan "2" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra22 0 -weight 1 grid rowconf $base.fra22 0 -weight 1 grid $base.fra22.mes23 -in $base.fra22 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra22.ent24 -in $base.fra22 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.but25 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.but26 -in $base -column "1" -row "1" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top22 {base {container 0}} { if {$base == ""} { set base .top22 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 250x150 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Message" } message $base.mes23 -aspect "300" -padx "5" -pady "2" label $base.lab26 -bitmap "info" -highlightcolor "#000000" -text "label" button $base.but17 -command "Window destroy .top22" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "OK" ################### # SETTING GEOMETRY ################### grid columnconf $base 1 -weight 1 grid rowconf $base 0 -weight 1 grid $base.mes23 -in $base -column "1" -row "0" -columnspan "1" -rowspan "1" -padx "4" -pady "4" -sticky "nesw" grid $base.lab26 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "4" -ipady "4" -padx "4" -pady "4" -sticky "nesw" grid $base.but17 -in $base -column "0" -row "1" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top23 {base {container 0}} { if {$base == ""} { set base .top23 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 408x288 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - GUI font settings" } frame $base.fra25 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" button $base.fra25.but32 -command "fontman save" -highlightcolor "#000000" -relief "groove" -text "Save" button $base.fra25.but36 -command "Window destroy .top23" -highlightcolor "#000000" -relief "groove" -text "Cancel" frame $base.fra18 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" checkbutton $base.fra18.che19 -borderwidth "1" -command "fontman ul" -highlightcolor "#000000" -text "Use system fonts" -variable "configs(sysfonts)" label $base.lab30 -borderwidth "0" -highlightcolor "#000000" -text "Example text" frame $base.fra36 -height "75" -highlightcolor "#000000" -width "125" frame $base.fra36.cpd37 -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra36.cpd37.01 -borderwidth "1" -highlightcolor "#000000" -xscrollcommand "$base.fra36.cpd37.02 set" -yscrollcommand "$base.fra36.cpd37.03 set" bind $base.fra36.cpd37.01 { .top23.fra36.cpd37.01 activate @%x,%y fontman ul } scrollbar $base.fra36.cpd37.02 -borderwidth "1" -command "$base.fra36.cpd37.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra36.cpd37.03 -borderwidth "1" -command "$base.fra36.cpd37.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" frame $base.fra36.cpd38 -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra36.cpd38.01 -borderwidth "1" -height "2" -highlightcolor "#000000" -width "4" -xscrollcommand "$base.fra36.cpd38.02 set" -yscrollcommand "$base.fra36.cpd38.03 set" bind $base.fra36.cpd38.01 { .top23.fra36.cpd38.01 activate @%x,%y fontman ul } scrollbar $base.fra36.cpd38.02 -borderwidth "1" -command "$base.fra36.cpd38.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra36.cpd38.03 -borderwidth "1" -command "$base.fra36.cpd38.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" frame $base.fra36.fra39 -height "75" -highlightcolor "#000000" -width "125" checkbutton $base.fra36.fra39.che40 -anchor "w" -borderwidth "1" -command "fontman ul" -highlightcolor "#000000" -text "Bold" -variable "configs(fontbold)" checkbutton $base.fra36.fra39.che41 -anchor "w" -borderwidth "1" -command "fontman ul" -highlightcolor "#000000" -text "Italic" -variable "configs(fontitalic)" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra25 -in $base -column "0" -row "3" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid $base.fra25.but32 -in $base.fra25 -column "1" -row "0" -columnspan "1" -rowspan "1" grid $base.fra25.but36 -in $base.fra25 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.fra18 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid $base.fra18.che19 -in $base.fra18 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.lab30 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid $base.fra36 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra36 0 -weight 1 grid rowconf $base.fra36 0 -weight 1 grid $base.fra36.cpd37 -in $base.fra36 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra36.cpd37 0 -weight 1 grid rowconf $base.fra36.cpd37 0 -weight 1 grid $base.fra36.cpd37.01 -in $base.fra36.cpd37 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra36.cpd37.02 -in $base.fra36.cpd37 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra36.cpd37.03 -in $base.fra36.cpd37 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra36.cpd38 -in $base.fra36 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid columnconf $base.fra36.cpd38 0 -weight 1 grid rowconf $base.fra36.cpd38 0 -weight 1 grid $base.fra36.cpd38.01 -in $base.fra36.cpd38 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra36.cpd38.02 -in $base.fra36.cpd38 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra36.cpd38.03 -in $base.fra36.cpd38 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra36.fra39 -in $base.fra36 -column "2" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "n" grid $base.fra36.fra39.che40 -in $base.fra36.fra39 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra36.fra39.che41 -in $base.fra36.fra39 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" } proc vTclWindow.top24 {base {container 0}} { if {$base == ""} { set base .top24 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 500x200 wm maxsize $base 1265 930 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Command Trace" } frame $base.cpd25 -relief "raised" -height "30" -highlightcolor "#000000" -width "30" scrollbar $base.cpd25.01 -borderwidth "1" -command "$base.cpd25.03 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.cpd25.02 -borderwidth "1" -command "$base.cpd25.03 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" text $base.cpd25.03 -borderwidth "1" -height "1" -highlightcolor "#000000" -width "8" -xscrollcommand "$base.cpd25.01 set" -yscrollcommand "$base.cpd25.02 set" button $base.but26 -command "destroyfilter .top24" -highlightcolor "#000000" -relief "groove" -text "Close" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.cpd25 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.cpd25 0 -weight 1 grid rowconf $base.cpd25 0 -weight 1 grid $base.cpd25.01 -in $base.cpd25 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.cpd25.02 -in $base.cpd25 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.cpd25.03 -in $base.cpd25 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.but26 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top25 {base {container 0}} { if {$base == ""} { set base .top25 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 204x120 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - About" } frame $base.fra26 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" message $base.fra26.mes28 -aspect "550" -borderwidth "1" -justify "center" -padx "5" -pady "2" -text "Author: Steffen Leich-Nienhaus steffen.leich _at_ gmail.com" label $base.fra26.lab21 -borderwidth "1" -highlightcolor "#000000" frame $base.fra27 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" button $base.fra27.but29 -command "Window destroy .top25" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Close" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra26 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid $base.fra26.mes28 -in $base.fra26 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra26.lab21 -in $base.fra26 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra27 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid columnconf $base.fra27 0 -weight 1 grid $base.fra27.but29 -in $base.fra27 -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top26 {base {container 0}} { if {$base == ""} { set base .top26 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 420x240 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Command History" } frame $base.cpd27 -borderwidth "1" -height "30" -highlightcolor "#000000" -width "30" scrollbar $base.cpd27.01 -borderwidth "1" -command "$base.cpd27.03 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.cpd27.02 -borderwidth "1" -command "$base.cpd27.03 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" text $base.cpd27.03 -borderwidth "1" -height "1" -highlightcolor "#000000" -width "8" -wrap "none" -xscrollcommand "$base.cpd27.01 set" -yscrollcommand "$base.cpd27.02 set" frame $base.fra17 -relief "groove" -height "75" -highlightcolor "#000000" -width "125" radiobutton $base.fra17.rad25 -anchor "w" -borderwidth "1" -command "historyman print" -highlightcolor "#000000" -indicatoron "0" -relief "raised" -selectcolor "#8c8cff" -text "Keydist" -value "5" -variable "histjob" radiobutton $base.fra17.rad26 -anchor "w" -borderwidth "1" -command "historyman print" -highlightcolor "#000000" -indicatoron "0" -relief "ridge" -selectcolor "#8c8cff" -text "Keygen" -value "4" -variable "histjob" radiobutton $base.fra17.rad28 -anchor "w" -borderwidth "1" -command "historyman print" -highlightcolor "#000000" -indicatoron "0" -selectcolor "#8c8cff" -text "SFTP connect" -value "2" -variable "histjob" radiobutton $base.fra17.rad29 -anchor "w" -borderwidth "1" -command "historyman print" -highlightcolor "#000000" -indicatoron "0" -relief "sunken" -selectcolor "#8c8cff" -text "SSH connect" -value "1" -variable "histjob" radiobutton $base.fra17.rad37 -anchor "w" -borderwidth "1" -command "historyman print" -highlightcolor "#000000" -indicatoron "0" -relief "raised" -selectcolor "#8c8cff" -text "Agent" -value "6" -variable "histjob" button $base.but18 -command "destroyfilter .top26" -highlightcolor "#000000" -relief "groove" -text "Close" menubutton $base.men17 -highlightcolor "#000000" -indicatoron "1" -menu "$base.men17.m" -padx "4" -pady "3" -relief "groove" -text "Clear hist." menu $base.men17.m -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.men17.m add command -command "historyman clear 30" -label "Keep last 30 days" $base.men17.m add command -command "historyman clear 7" -label "Keep last 7 days" $base.men17.m add command -command "historyman clear 1" -label "Keep one day" $base.men17.m add command -command "historyman clear 0" -label "Keep nothing" button $base.but28 -command "historyman report" -highlightcolor "#000000" -justify "left" -relief "groove" -text "Save logs" ################### # SETTING GEOMETRY ################### grid columnconf $base 1 -weight 1 grid rowconf $base 1 -weight 1 grid $base.cpd27 -in $base -column "1" -row "0" -columnspan "1" -rowspan "3" -sticky "nesw" grid columnconf $base.cpd27 0 -weight 1 grid rowconf $base.cpd27 0 -weight 1 grid $base.cpd27.01 -in $base.cpd27 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.cpd27.02 -in $base.cpd27 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.cpd27.03 -in $base.cpd27 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra17 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "new" grid columnconf $base.fra17 0 -weight 1 grid $base.fra17.rad25 -in $base.fra17 -column "0" -row "4" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra17.rad26 -in $base.fra17 -column "0" -row "3" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra17.rad28 -in $base.fra17 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra17.rad29 -in $base.fra17 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra17.rad37 -in $base.fra17 -column "0" -row "5" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.but18 -in $base -column "0" -row "3" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.men17 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "esw" grid $base.but28 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "esw" } proc vTclWindow.top27 {base {container 0}} { if {$base == ""} { set base .top27 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 115x59 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Satellite" } frame $base.fra26 -height "75" -highlightcolor "#000000" -width "125" menubutton $base.fra26.01 -anchor "w" -highlightcolor "#000000" -indicatoron "1" -menu "$base.fra26.01.02" -padx "4" -pady "3" -relief "groove" -text "Connections" button $base.but27 -command "changetab big" -highlightcolor "#000000" -relief "groove" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 2 -weight 1 grid $base.fra26 -in $base -column "0" -row "0" -columnspan "2" -rowspan "1" -sticky "ew" grid columnconf $base.fra26 0 -weight 1 grid $base.fra26.01 -in $base.fra26 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.but27 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "w" } proc vTclWindow.top32 {base {container 0}} { if {$base == ""} { set base .top32 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 266x258 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - GUI Colors" } frame $base.fra33 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" button $base.fra33.but37 -anchor "w" -command "colorman fore" -height "1" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -width "2" button $base.fra33.but38 -anchor "w" -command "colorman back" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" button $base.fra33.but39 -anchor "w" -command "colorman entfore" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" button $base.fra33.but40 -anchor "w" -command "colorman entback" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" button $base.fra33.but41 -anchor "w" -command "colorman listfore" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" button $base.fra33.but42 -anchor "w" -command "colorman listback" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" label $base.fra33.lab17 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Foreground:" label $base.fra33.lab18 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Background:" label $base.fra33.lab19 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Entries - Fore:" label $base.fra33.lab20 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Entries - Back:" label $base.fra33.lab21 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Lists - Fore:" label $base.fra33.lab22 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Lists - Back:" checkbutton $base.fra33.che17 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "foredef" checkbutton $base.fra33.che23 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "backdef" checkbutton $base.fra33.che24 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "entforedef" checkbutton $base.fra33.che25 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "entbackdef" checkbutton $base.fra33.che26 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "listforedef" checkbutton $base.fra33.che27 -anchor "e" -borderwidth "1" -highlightcolor "#000000" -text "Default" -variable "listbackdef" frame $base.fra34 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" button $base.fra34.but35 -command "Window destroy .top32" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Cancel" button $base.fra34.but36 -command "colorman save" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Save" label $base.lab18 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Define colors or use system defaults" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra33 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra33 1 -weight 1 grid $base.fra33.but37 -in $base.fra33 -column "1" -row "0" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.but38 -in $base.fra33 -column "1" -row "1" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.but39 -in $base.fra33 -column "1" -row "2" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.but40 -in $base.fra33 -column "1" -row "3" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.but41 -in $base.fra33 -column "1" -row "4" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.but42 -in $base.fra33 -column "1" -row "5" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.lab17 -in $base.fra33 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.lab18 -in $base.fra33 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.lab19 -in $base.fra33 -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.lab20 -in $base.fra33 -column "0" -row "3" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.lab21 -in $base.fra33 -column "0" -row "4" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.lab22 -in $base.fra33 -column "0" -row "5" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra33.che17 -in $base.fra33 -column "2" -row "0" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.che23 -in $base.fra33 -column "2" -row "1" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.che24 -in $base.fra33 -column "2" -row "2" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.che25 -in $base.fra33 -column "2" -row "3" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.che26 -in $base.fra33 -column "2" -row "4" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra33.che27 -in $base.fra33 -column "2" -row "5" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra34 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid $base.fra34.but35 -in $base.fra34 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.fra34.but36 -in $base.fra34 -column "1" -row "0" -columnspan "1" -rowspan "1" grid $base.lab18 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" } proc vTclWindow.top33 {base {container 0}} { if {$base == ""} { set base .top33 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 624x219 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Agent info" } frame $base.fra34 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" label $base.fra34.lab36 -anchor "e" -borderwidth "0" -highlightcolor "#000000" -relief "raised" -text "SSH_AUTH_SOCK:" label $base.fra34.lab37 -anchor "e" -borderwidth "0" -highlightcolor "#000000" -relief "raised" -text "SSH_AGENT_PID:" label $base.fra34.lab38 -anchor "w" -borderwidth "0" -highlightcolor "#000000" label $base.fra34.lab39 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -relief "raised" button $base.but40 -command "destroyfilter .top33" -highlightcolor "#000000" -relief "groove" -text "Close" frame $base.cpd36 -relief "raised" -height "30" -highlightcolor "#000000" -width "30" scrollbar $base.cpd36.01 -borderwidth "1" -command "$base.cpd36.03 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.cpd36.02 -borderwidth "1" -command "$base.cpd36.03 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" text $base.cpd36.03 -borderwidth "1" -height "1" -highlightcolor "#000000" -width "8" -xscrollcommand "$base.cpd36.01 set" -yscrollcommand "$base.cpd36.02 set" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 1 -weight 1 grid $base.fra34 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra34 1 -weight 1 grid $base.fra34.lab36 -in $base.fra34 -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "4" -sticky "nesw" grid $base.fra34.lab37 -in $base.fra34 -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "4" -sticky "nesw" grid $base.fra34.lab38 -in $base.fra34 -column "1" -row "0" -columnspan "1" -rowspan "1" -padx "2" -sticky "nesw" grid $base.fra34.lab39 -in $base.fra34 -column "1" -row "1" -columnspan "1" -rowspan "1" -padx "2" -sticky "nesw" grid $base.but40 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.cpd36 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.cpd36 0 -weight 1 grid rowconf $base.cpd36 0 -weight 1 grid $base.cpd36.01 -in $base.cpd36 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.cpd36.02 -in $base.cpd36 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.cpd36.03 -in $base.cpd36 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" } proc vTclWindow.top40 {base {container 0}} { if {$base == ""} { set base .top40 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -menu "$base.m52" wm focusmodel $base passive wm geometry $base 589x379 wm maxsize $base 1284 1002 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Remote Account Manager" } frame $base.fra41 -relief "groove" -height "75" -width "125" frame $base.fra41.cpd50 -relief "raised" -height "30" -width "30" scrollbar $base.fra41.cpd50.01 -borderwidth "1" -command "$base.fra41.cpd50.03 xview" -orient "horizontal" -width "10" scrollbar $base.fra41.cpd50.02 -borderwidth "1" -command "$base.fra41.cpd50.03 yview" -width "10" text $base.fra41.cpd50.03 -borderwidth "1" -height "1" -width "8" -xscrollcommand "$base.fra41.cpd50.01 set" -yscrollcommand "$base.fra41.cpd50.02 set" frame $base.fra42 -relief "groove" -height "75" -width "125" frame $base.fra42.cpd49 -relief "raised" -height "30" -width "30" scrollbar $base.fra42.cpd49.01 -borderwidth "1" -command "$base.fra42.cpd49.03 xview" -orient "horizontal" -width "10" scrollbar $base.fra42.cpd49.02 -borderwidth "1" -command "$base.fra42.cpd49.03 yview" -width "10" text $base.fra42.cpd49.03 -borderwidth "1" -height "1" -width "8" -xscrollcommand "$base.fra42.cpd49.01 set" -yscrollcommand "$base.fra42.cpd49.02 set" frame $base.fra43 -borderwidth "2" -relief "groove" -height "75" -width "125" button $base.fra43.but47 -command "manage_remote cancel" -relief "groove" -text "Do nothing" button $base.fra43.but48 -command "manage_remote write" -relief "groove" -text "Write settings to remote account" label $base.lab51 -anchor "w" -borderwidth "0" -font "helvetica 12 bold" -text "Remote Account Manager for..." menu $base.m52 -activeborderwidth "1" -borderwidth "1" -cursor "" label $base.lab53 -anchor "w" -borderwidth "0" -relief "raised" -text "Remote ~/.ssh/authorized_keys file" frame $base.fra54 -relief "groove" -height "75" -width "125" frame $base.fra54.cpd57 -relief "raised" -height "30" -width "30" scrollbar $base.fra54.cpd57.01 -borderwidth "1" -command "$base.fra54.cpd57.03 xview" -orient "horizontal" -width "10" scrollbar $base.fra54.cpd57.02 -borderwidth "1" -command "$base.fra54.cpd57.03 yview" -width "10" text $base.fra54.cpd57.03 -borderwidth "1" -height "1" -width "6" -wrap "none" -xscrollcommand "$base.fra54.cpd57.01 set" -yscrollcommand "$base.fra54.cpd57.02 set" label $base.lab55 -anchor "w" -borderwidth "0" -relief "raised" -text "Remote ~/.shosts file" label $base.lab56 -anchor "w" -borderwidth "0" -relief "raised" -text "Remote ~/.ssh/rc file" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 2 -weight 1 grid rowconf $base 4 -weight 1 grid rowconf $base 6 -weight 1 grid $base.fra41 -in $base -column "0" -row "4" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra41 0 -weight 1 grid rowconf $base.fra41 0 -weight 1 grid $base.fra41.cpd50 -in $base.fra41 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra41.cpd50 0 -weight 1 grid rowconf $base.fra41.cpd50 0 -weight 1 grid $base.fra41.cpd50.01 -in $base.fra41.cpd50 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra41.cpd50.02 -in $base.fra41.cpd50 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra41.cpd50.03 -in $base.fra41.cpd50 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra42 -in $base -column "0" -row "6" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra42 0 -weight 1 grid rowconf $base.fra42 0 -weight 1 grid $base.fra42.cpd49 -in $base.fra42 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra42.cpd49 0 -weight 1 grid rowconf $base.fra42.cpd49 0 -weight 1 grid $base.fra42.cpd49.01 -in $base.fra42.cpd49 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra42.cpd49.02 -in $base.fra42.cpd49 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra42.cpd49.03 -in $base.fra42.cpd49 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra43 -in $base -column "0" -row "8" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -sticky "ew" grid $base.fra43.but47 -in $base.fra43 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.fra43.but48 -in $base.fra43 -column "1" -row "0" -columnspan "1" -rowspan "1" grid $base.lab51 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.lab53 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.fra54 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra54 0 -weight 1 grid rowconf $base.fra54 0 -weight 1 grid $base.fra54.cpd57 -in $base.fra54 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra54.cpd57 0 -weight 1 grid rowconf $base.fra54.cpd57 0 -weight 1 grid $base.fra54.cpd57.01 -in $base.fra54.cpd57 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra54.cpd57.02 -in $base.fra54.cpd57 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra54.cpd57.03 -in $base.fra54.cpd57 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.lab55 -in $base -column "0" -row "3" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.lab56 -in $base -column "0" -row "5" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" } proc vTclWindow.top43 {base {container 0}} { if {$base == ""} { set base .top43 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 243x350 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Local forwardings" } frame $base.cpd44 -borderwidth "1" -highlightcolor "#000000" -width "60" listbox $base.cpd44.01 -borderwidth "1" -height "5" -highlightcolor "#000000" -xscrollcommand "$base.cpd44.02 set" -yscrollcommand "$base.cpd44.03 set" bind $base.cpd44.01 { .top43.cpd44.01 activate @%x,%y showcomm l } scrollbar $base.cpd44.02 -borderwidth "1" -command "$base.cpd44.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.cpd44.03 -borderwidth "1" -command "$base.cpd44.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" frame $base.fra45 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" entry $base.fra45.ent46 -borderwidth "1" -highlightcolor "#000000" -width "10" label $base.fra45.lab47 -borderwidth "1" -highlightcolor "#000000" -relief "raised" -text ">" entry $base.fra45.ent48 -borderwidth "1" -highlightcolor "#000000" -width "10" bind $base.fra45.ent48 { add_forw l } menubutton $base.fra45.men49 -highlightcolor "#000000" -indicatoron "1" -menu "$base.fra45.men49.m" -padx "4" -pady "3" -relief "groove" -text "Ports" menu $base.fra45.men49.m -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.fra45.men49.m add command -command "insprot 110 l" -label "pop3" -state "active" $base.fra45.men49.m add command -command "insprot 143 l" -label "imap" $base.fra45.men49.m add command -command "insprot 80 l" -label "http" $base.fra45.men49.m add command -command "insprot 25 l" -label "smtp" $base.fra45.men49.m add command -command "insprot 23 l" -label "telnet" $base.fra45.men49.m add command -command "insprot 5901 l" -label "vnc" button $base.fra45.but21 -command "add_forw l" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Add" button $base.fra45.but17 -command "del_forw l" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Delete" entry $base.fra45.ent17 -borderwidth "1" -highlightcolor "#000000" label $base.fra45.lab17 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Host - leave empty for target host:" label $base.fra45.lab33 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Comment:" entry $base.fra45.ent34 -borderwidth "1" -highlightcolor "#000000" label $base.fra45.lab35 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Ports:" button $base.but22 -command "Window destroy .top43" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Cancel" button $base.but17 -command "save_forwards l" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "OK" label $base.lab25 -anchor "w" -highlightcolor "#000000" label $base.lab26 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Local forwardings" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid columnconf $base 1 -weight 1 grid rowconf $base 1 -weight 1 grid $base.cpd44 -in $base -column "0" -row "1" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.cpd44 0 -weight 1 grid rowconf $base.cpd44 0 -weight 1 grid $base.cpd44.01 -in $base.cpd44 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.cpd44.02 -in $base.cpd44 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.cpd44.03 -in $base.cpd44 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra45 -in $base -column "0" -row "3" -columnspan "2" -rowspan "1" -ipadx "4" -ipady "4" -padx "4" -pady "4" -sticky "ew" grid columnconf $base.fra45 0 -weight 1 grid columnconf $base.fra45 2 -weight 1 grid $base.fra45.ent46 -in $base.fra45 -column "0" -row "3" -columnspan "1" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra45.lab47 -in $base.fra45 -column "1" -row "3" -columnspan "1" -rowspan "1" grid $base.fra45.ent48 -in $base.fra45 -column "2" -row "3" -columnspan "1" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra45.men49 -in $base.fra45 -column "2" -row "6" -columnspan "1" -rowspan "1" grid $base.fra45.but21 -in $base.fra45 -column "1" -row "6" -columnspan "1" -rowspan "1" grid $base.fra45.but17 -in $base.fra45 -column "0" -row "6" -columnspan "1" -rowspan "1" grid $base.fra45.ent17 -in $base.fra45 -column "0" -row "1" -columnspan "3" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra45.lab17 -in $base.fra45 -column "0" -row "0" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.fra45.lab33 -in $base.fra45 -column "0" -row "4" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.fra45.ent34 -in $base.fra45 -column "0" -row "5" -columnspan "3" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra45.lab35 -in $base.fra45 -column "0" -row "2" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.but22 -in $base -column "0" -row "4" -columnspan "1" -rowspan "1" grid $base.but17 -in $base -column "1" -row "4" -columnspan "1" -rowspan "1" grid $base.lab25 -in $base -column "0" -row "2" -columnspan "2" -rowspan "1" -padx "2" -sticky "ew" grid $base.lab26 -in $base -column "0" -row "0" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "new" } proc vTclWindow.top50 {base {container 0}} { if {$base == ""} { set base .top50 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 315x236 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Hostkeys" } frame $base.fra51 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" frame $base.fra51.fra53 -height "75" -highlightcolor "#000000" -width "125" button $base.fra51.fra53.but56 -command "hostkey view" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -state "disabled" -text "View" button $base.fra51.fra53.but57 -command "hostkey delete" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Delete" button $base.fra51.fra53.but18 -command "hostkey export" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -state "disabled" -text "Export" frame $base.fra51.cpd54 -relief "raised" -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra51.cpd54.01 -borderwidth "1" -highlightcolor "#000000" -xscrollcommand "$base.fra51.cpd54.02 set" -yscrollcommand "$base.fra51.cpd54.03 set" scrollbar $base.fra51.cpd54.02 -borderwidth "1" -command "$base.fra51.cpd54.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra51.cpd54.03 -borderwidth "1" -command "$base.fra51.cpd54.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" label $base.fra51.lab17 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Collected hostkeys, keytype assumed:" label $base.fra51.lab177 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -textvariable "hostkeytype" button $base.but38 -command "Window destroy .top50" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Close" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra51 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra51 0 -weight 1 grid rowconf $base.fra51 2 -weight 1 grid $base.fra51.fra53 -in $base.fra51 -column "1" -row "2" -columnspan "1" -rowspan "1" -ipadx "2" -padx "2" -sticky "n" grid $base.fra51.fra53.but56 -in $base.fra51.fra53 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra51.fra53.but57 -in $base.fra51.fra53 -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra51.fra53.but18 -in $base.fra51.fra53 -column "0" -row "1" -columnspan "1" -rowspan "1" grid $base.fra51.cpd54 -in $base.fra51 -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra51.cpd54 0 -weight 1 grid rowconf $base.fra51.cpd54 0 -weight 1 grid $base.fra51.cpd54.01 -in $base.fra51.cpd54 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra51.cpd54.02 -in $base.fra51.cpd54 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra51.cpd54.03 -in $base.fra51.cpd54 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra51.lab17 -in $base.fra51 -column "0" -row "0" -columnspan "2" -rowspan "1" -sticky "ew" grid $base.fra51.lab177 -in $base.fra51 -column "0" -row "1" -columnspan "2" -rowspan "1" -sticky "ew" grid $base.but38 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top51 {base {container 0}} { if {$base == ""} { set base .top51 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -menu "$base.m20" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 243x349 wm maxsize $base 1009 738 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Remote forwardings" } frame $base.cpd53 -borderwidth "1" -height "30" -highlightcolor "#000000" -width "30" listbox $base.cpd53.01 -borderwidth "1" -height "5" -highlightcolor "#000000" -xscrollcommand "$base.cpd53.02 set" -yscrollcommand "$base.cpd53.03 set" bind $base.cpd53.01 { .top51.cpd53.01 activate @%x,%y showcomm r } scrollbar $base.cpd53.02 -borderwidth "1" -command "$base.cpd53.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.cpd53.03 -borderwidth "1" -command "$base.cpd53.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" button $base.but21 -command "Window destroy .top51" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Cancel" button $base.but18 -command "save_forwards r" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "OK" label $base.lab24 -anchor "w" -highlightcolor "#000000" frame $base.fra36 -borderwidth "2" -relief "groove" -height "75" -highlightcolor "#000000" -width "125" entry $base.fra36.01 -borderwidth "1" -highlightcolor "#000000" -width "10" label $base.fra36.02 -borderwidth "1" -highlightcolor "#000000" -relief "raised" -text ">" entry $base.fra36.03 -borderwidth "1" -highlightcolor "#000000" -width "10" bind $base.fra36.03 { add_forw r } menubutton $base.fra36.04 -highlightcolor "#000000" -indicatoron "1" -menu "$base.fra36.04.05" -padx "4" -pady "3" -relief "groove" -text "Ports" menu $base.fra36.04.05 -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.fra36.04.05 add command -command "insprot 110 r" -label "pop3" -state "active" $base.fra36.04.05 add command -command "insprot 143 r" -label "imap" $base.fra36.04.05 add command -command "insprot 80 r" -label "http" $base.fra36.04.05 add command -command "insprot 25 r" -label "smtp" $base.fra36.04.05 add command -command "insprot 23 r" -label "telnet" $base.fra36.04.05 add command -command "insprot 5901 r" -label "vnc" button $base.fra36.06 -command "add_forw r" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Add" button $base.fra36.07 -command "del_forw r" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Delete" entry $base.fra36.08 -borderwidth "1" -highlightcolor "#000000" label $base.fra36.09 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Host - leave empty for local host:" label $base.fra36.010 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Comment:" entry $base.fra36.011 -borderwidth "1" -highlightcolor "#000000" label $base.fra36.012 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Ports:" label $base.lab27 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Remote forwardings" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid columnconf $base 1 -weight 1 grid rowconf $base 1 -weight 1 grid $base.cpd53 -in $base -column "0" -row "1" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.cpd53 0 -weight 1 grid rowconf $base.cpd53 0 -weight 1 grid $base.cpd53.01 -in $base.cpd53 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.cpd53.02 -in $base.cpd53 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.cpd53.03 -in $base.cpd53 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.but21 -in $base -column "0" -row "4" -columnspan "1" -rowspan "1" grid $base.but18 -in $base -column "1" -row "4" -columnspan "1" -rowspan "1" grid $base.lab24 -in $base -column "0" -row "2" -columnspan "2" -rowspan "1" -padx "2" -sticky "ew" grid $base.fra36 -in $base -column "0" -row "3" -columnspan "2" -rowspan "1" -ipadx "4" -ipady "4" -padx "4" -pady "4" -sticky "ew" grid columnconf $base.fra36 0 -weight 1 grid columnconf $base.fra36 2 -weight 1 grid $base.fra36.01 -in $base.fra36 -column "0" -row "3" -columnspan "1" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra36.02 -in $base.fra36 -column "1" -row "3" -columnspan "1" -rowspan "1" grid $base.fra36.03 -in $base.fra36 -column "2" -row "3" -columnspan "1" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra36.04 -in $base.fra36 -column "2" -row "6" -columnspan "1" -rowspan "1" grid $base.fra36.06 -in $base.fra36 -column "1" -row "6" -columnspan "1" -rowspan "1" grid $base.fra36.07 -in $base.fra36 -column "0" -row "6" -columnspan "1" -rowspan "1" grid $base.fra36.08 -in $base.fra36 -column "0" -row "1" -columnspan "3" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra36.09 -in $base.fra36 -column "0" -row "0" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.fra36.010 -in $base.fra36 -column "0" -row "4" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.fra36.011 -in $base.fra36 -column "0" -row "5" -columnspan "3" -rowspan "1" -padx "4" -sticky "ew" grid $base.fra36.012 -in $base.fra36 -column "0" -row "2" -columnspan "3" -rowspan "1" -sticky "ew" grid $base.lab27 -in $base -column "0" -row "0" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "new" } proc vTclWindow.top52 {base {container 0}} { if {$base == ""} { set base .top52 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 353x420 wm maxsize $base 1265 994 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Key management" } frame $base.fra18 -height "75" -highlightcolor "#000000" -width "125" label $base.fra18.lab23 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Comment" entry $base.fra18.ent24 -borderwidth "1" -highlightcolor "#000000" label $base.fra18.lab25 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Keyfile" entry $base.fra18.ent26 -borderwidth "1" -highlightcolor "#000000" button $base.fra18.but27 -command "keygen chpath" -height "1" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" label $base.fra18.lab28 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Passphrase" entry $base.fra18.ent29 -borderwidth "1" -highlightcolor "#000000" -show "*" checkbutton $base.fra18.che30 -borderwidth "1" -highlightcolor "#000000" -text "No passphrase" -variable "nopass" button $base.fra18.but54 -command "keygen gen" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Generate keypair" entry $base.fra18.ent25 -borderwidth "1" -highlightcolor "#000000" -show "*" label $base.fra18.lab26 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Repeat pass." checkbutton $base.fra18.che17 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -justify "left" -text "Enter passphrase in textmode" -variable "passintext" menubutton $base.fra18.men30 -highlightcolor "#000000" -indicatoron "1" -menu "$base.fra18.men30.m" -padx "4" -pady "3" -relief "groove" -textvariable "keytype" menu $base.fra18.men30.m -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.fra18.men30.m add radiobutton -value "SSH2 RSA" -variable "keytype" -label "SSH2 RSA" $base.fra18.men30.m add radiobutton -value "SSH2 DSA" -variable "keytype" -label "SSH2 DSA" $base.fra18.men30.m add radiobutton -value "SSH1 RSA1" -variable "keytype" -label "SSH1 RSA1" label $base.fra18.lab31 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -relief "raised" -text "Keytype" label $base.lab32 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Key-generation" label $base.lab33 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -text "Editing, conversion and information" frame $base.fra34 -height "75" -highlightcolor "#000000" -width "125" frame $base.fra34.cpd17 -borderwidth "1" -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra34.cpd17.01 -borderwidth "1" -highlightcolor "#000000" -xscrollcommand "$base.fra34.cpd17.02 set" -yscrollcommand "$base.fra34.cpd17.03 set" bind $base.fra34.cpd17.01 { keygen info } scrollbar $base.fra34.cpd17.02 -borderwidth "1" -command "$base.fra34.cpd17.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra34.cpd17.03 -borderwidth "1" -command "$base.fra34.cpd17.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" frame $base.fra34.fra20 -borderwidth "1" -height "75" -highlightcolor "#000000" -width "125" button $base.fra34.fra20.but21 -command "keygen info" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Show information" button $base.fra34.fra20.but22 -command "keygen 1" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Change passphrase" checkbutton $base.fra34.fra20.che23 -anchor "w" -borderwidth "1" -highlightcolor "#000000" -justify "left" -text "Change passphrase in textmode" -variable "pwtextmode" button $base.fra34.fra20.but24 -command "keygen del" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Delete key" menubutton $base.fra34.fra20.men33 -highlightcolor "#000000" -menu "$base.fra34.fra20.men33.m" -padx "4" -pady "3" -relief "groove" -state "disabled" -text "Convert key to..." menu $base.fra34.fra20.men33.m -activeborderwidth "1" -borderwidth "1" -cursor "" -tearoff "0" $base.fra34.fra20.men33.m add command -label "SECSH Public Key File Format" $base.fra34.fra20.men33.m add command -label "OpenSSH compatible" $base.fra34.fra20.men33.m add command -label "OpenSSH public key" button $base.fra34.fra20.but17 -command "update_keylist" -highlightcolor "#000000" -relief "groove" -text "Refresh list" button $base.but37 -command "Window destroy .top52" -highlightcolor "#000000" -padx "9" -pady "3" -relief "groove" -text "Close" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 3 -weight 1 grid $base.fra18 -in $base -column "0" -row "1" -columnspan "2" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid columnconf $base.fra18 1 -weight 1 grid $base.fra18.lab23 -in $base.fra18 -column "0" -row "2" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.ent24 -in $base.fra18 -column "1" -row "2" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.fra18.lab25 -in $base.fra18 -column "0" -row "3" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.ent26 -in $base.fra18 -column "1" -row "3" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.fra18.but27 -in $base.fra18 -column "2" -row "3" -columnspan "1" -rowspan "1" -sticky "nsw" grid $base.fra18.lab28 -in $base.fra18 -column "0" -row "4" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.ent29 -in $base.fra18 -column "1" -row "4" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.fra18.che30 -in $base.fra18 -column "2" -row "4" -columnspan "1" -rowspan "1" -sticky "w" grid $base.fra18.but54 -in $base.fra18 -column "2" -row "6" -columnspan "2" -rowspan "1" grid $base.fra18.ent25 -in $base.fra18 -column "1" -row "5" -columnspan "1" -rowspan "1" -pady "2" -sticky "ew" grid $base.fra18.lab26 -in $base.fra18 -column "0" -row "5" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.che17 -in $base.fra18 -column "2" -row "5" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.men30 -in $base.fra18 -column "1" -row "6" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra18.lab31 -in $base.fra18 -column "0" -row "6" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.lab32 -in $base -column "0" -row "0" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.lab33 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -padx "2" -pady "2" -sticky "ew" grid $base.fra34 -in $base -column "0" -row "3" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra34 0 -weight 1 grid rowconf $base.fra34 0 -weight 1 grid rowconf $base.fra34 1 -weight 1 grid $base.fra34.cpd17 -in $base.fra34 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra34.cpd17 0 -weight 1 grid rowconf $base.fra34.cpd17 0 -weight 1 grid $base.fra34.cpd17.01 -in $base.fra34.cpd17 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra34.cpd17.02 -in $base.fra34.cpd17 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.cpd17.03 -in $base.fra34.cpd17 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra34.fra20 -in $base.fra34 -column "1" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "n" grid $base.fra34.fra20.but21 -in $base.fra34.fra20 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.fra20.but22 -in $base.fra34.fra20 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.fra20.che23 -in $base.fra34.fra20 -column "0" -row "2" -columnspan "2" -rowspan "1" -sticky "ew" grid $base.fra34.fra20.but24 -in $base.fra34.fra20 -column "0" -row "4" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.fra20.men33 -in $base.fra34.fra20 -column "0" -row "3" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.fra20.but17 -in $base.fra34.fra20 -column "0" -row "5" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.but37 -in $base -column "0" -row "4" -columnspan "2" -rowspan "1" -padx "2" -pady "2" -sticky "ew" } proc vTclWindow.top53 {base {container 0}} { if {$base == ""} { set base .top53 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel -borderwidth "4" -highlightcolor "#000000" wm focusmodel $base passive wm geometry $base 436x294 wm maxsize $base 1265 930 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm title $base "secpanel - Key distribution" } frame $base.fra18 -height "75" -highlightcolor "#000000" -width "125" label $base.fra18.lab21 -anchor "w" -borderwidth "0" -font "Helvetica 12 bold" -highlightcolor "#000000" -text "secpanel key distribution" frame $base.fra20 -height "75" -highlightcolor "#000000" -width "125" frame $base.fra20.cpd22 -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra20.cpd22.01 -borderwidth "1" -highlightcolor "#000000" -xscrollcommand "$base.fra20.cpd22.02 set" -yscrollcommand "$base.fra20.cpd22.03 set" bind $base.fra20.cpd22.01 { .top53.fra20.cpd22.01 activate @%x,%y .top53.fra20.fra26.ent28 delete 0 end if {[.top53.fra20.cpd22.01 get active] != ""} { .top53.fra20.fra26.ent28 insert end "$sshdir/[.top53.fra20.cpd22.01 get active].pub" } } bind $base.fra20.cpd22.01 { distwizard host f } scrollbar $base.fra20.cpd22.02 -borderwidth "1" -command "$base.fra20.cpd22.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra20.cpd22.03 -borderwidth "1" -command "$base.fra20.cpd22.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" label $base.fra20.lab23 -borderwidth "0" -highlightcolor "#000000" -text "Select which key to distribute" frame $base.fra20.fra26 -height "75" -highlightcolor "#000000" -width "125" button $base.fra20.fra26.but27 -command "seldistkey" -highlightcolor "#000000" -relief "groove" -text "Browse" entry $base.fra20.fra26.ent28 -borderwidth "1" -highlightcolor "#000000" label $base.fra20.lab32 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -text "Available keys:" frame $base.fra29 -height "75" -highlightcolor "#000000" -width "125" button $base.fra29.but30 -command "Window destroy .top53" -highlightcolor "#000000" -relief "groove" -text "Cancel" button $base.fra29.but31 -command "distwizard host f" -highlightcolor "#000000" -relief "groove" -state "active" -text "Continue" button $base.fra29.but33 -highlightcolor "#000000" -relief "groove" -state "disabled" -text "Back" frame $base.fra34 -height "75" -highlightcolor "#000000" -width "125" frame $base.fra34.cpd35 -borderwidth "1" -height "30" -highlightcolor "#000000" -width "30" listbox $base.fra34.cpd35.01 -borderwidth "1" -height "0" -highlightcolor "#000000" -selectmode "extended" -xscrollcommand "$base.fra34.cpd35.02 set" -yscrollcommand "$base.fra34.cpd35.03 set" bind $base.fra34.cpd35.01 { distwizard confirm f } scrollbar $base.fra34.cpd35.02 -borderwidth "1" -command "$base.fra34.cpd35.01 xview" -cursor "left_ptr" -highlightcolor "#000000" -orient "horizontal" -troughcolor "#e2e2de" -width "10" scrollbar $base.fra34.cpd35.03 -borderwidth "1" -command "$base.fra34.cpd35.01 yview" -cursor "left_ptr" -highlightcolor "#000000" -troughcolor "#e2e2de" -width "10" label $base.fra34.lab36 -anchor "w" -borderwidth "0" -highlightcolor "#000000" -justify "left" -text "Select connection to distribute the key to:" frame $base.fra42 -height "75" -highlightcolor "#000000" -width "125" message $base.fra42.mes44 -aspect "500" -padx "2" -pady "2" -text "message" label $base.fra42.lab17 -bitmap "question" -borderwidth "0" -highlightcolor "#000000" -text "label" label $base.lab17 -anchor "w" -borderwidth "0" -highlightcolor "#000000" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 1 -weight 1 grid $base.fra18 -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid columnconf $base.fra18 0 -weight 1 grid $base.fra18.lab21 -in $base.fra18 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra20 -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "nesw" grid columnconf $base.fra20 1 -weight 1 grid rowconf $base.fra20 1 -weight 1 grid $base.fra20.cpd22 -in $base.fra20 -column "1" -row "1" -columnspan "1" -rowspan "2" -sticky "nesw" grid columnconf $base.fra20.cpd22 0 -weight 1 grid rowconf $base.fra20.cpd22 0 -weight 1 grid $base.fra20.cpd22.01 -in $base.fra20.cpd22 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra20.cpd22.02 -in $base.fra20.cpd22 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra20.cpd22.03 -in $base.fra20.cpd22 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra20.lab23 -in $base.fra20 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra20.fra26 -in $base.fra20 -column "0" -row "1" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -sticky "new" grid columnconf $base.fra20.fra26 0 -weight 1 grid $base.fra20.fra26.but27 -in $base.fra20.fra26 -column "0" -row "1" -columnspan "1" -rowspan "1" -pady "2" -sticky "w" grid $base.fra20.fra26.ent28 -in $base.fra20.fra26 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra20.lab32 -in $base.fra20 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra29 -in $base -column "0" -row "3" -columnspan "1" -rowspan "1" -ipadx "2" -ipady "2" -padx "2" -pady "2" -sticky "ew" grid columnconf $base.fra29 0 -weight 1 grid columnconf $base.fra29 1 -weight 1 grid $base.fra29.but30 -in $base.fra29 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "w" grid $base.fra29.but31 -in $base.fra29 -column "2" -row "0" -columnspan "1" -rowspan "1" -sticky "e" grid $base.fra29.but33 -in $base.fra29 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "e" grid columnconf $base.fra34 0 -weight 1 grid rowconf $base.fra34 1 -weight 1 grid $base.fra34.cpd35 -in $base.fra34 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "nesw" grid columnconf $base.fra34.cpd35 0 -weight 1 grid rowconf $base.fra34.cpd35 0 -weight 1 grid $base.fra34.cpd35.01 -in $base.fra34.cpd35 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra34.cpd35.02 -in $base.fra34.cpd35 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "ew" grid $base.fra34.cpd35.03 -in $base.fra34.cpd35 -column "1" -row "0" -columnspan "1" -rowspan "1" -sticky "ns" grid $base.fra34.lab36 -in $base.fra34 -column "0" -row "0" -columnspan "1" -rowspan "1" -sticky "new" grid columnconf $base.fra42 0 -weight 1 grid rowconf $base.fra42 1 -weight 1 grid $base.fra42.mes44 -in $base.fra42 -column "0" -row "1" -columnspan "1" -rowspan "1" -sticky "nesw" grid $base.fra42.lab17 -in $base.fra42 -column "1" -row "1" -columnspan "1" -rowspan "1" -ipadx "8" -ipady "8" -padx "8" -pady "8" grid $base.lab17 -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -padx "2" -sticky "ew" } Window show . Window show .top17 ./usr/local/lib/secpanel/default.profile0000644000000000000000000000063711337466421017177 0ustar rootroot# # SecPanel-Pofile # Do not edit, use SecPanel instead # set title "Default Profile" set host "" set user "" set port "22" set command "" set identity "" set agentforward "0" set x11forward "0" set nopriv "0" set verbose "0" set quiet "0" set fork "0" set gateway "0" set compress "1" set connwait "0" set termicon "0" set algo "default" set compressval "6" set sshverconnect "2" array set lfs {} array set rfs {} ./usr/local/lib/secpanel/convert_profile.tcl0000644000000000000000000000361711337466421020076 0ustar rootroot#!/usr/bin/tclsh ############################################################### # SecPanel helper # Converting from old profile seetings to new version (0.5) ############################################################### proc cp {} { global env if {! [file exists "$env(HOME)/.secpanel/sites"]} { puts "No sites-file to convert" return } set sf [open "$env(HOME)/.secpanel/sites"] while {[gets $sf line] >= 0} { set nf [open "$env(HOME)/.secpanel/profiles/newfiles.tmp" w] set sitetitle [lindex [split $line \#] 0] set sitehost [lindex [split $line \#] 1] set siteuser [lindex [split $line \#] 2] set defs [open "$env(HOME)/.secpanel/default.profile"] while {[gets $defs defline] >= 0} { switch -regexp $defline { "^set title .*" { regsub -all " " $sitetitle "" filetitle puts $nf "set title \"$sitetitle\"" } "^set host .*" { puts $nf "set host \"$sitehost\"" } "^set user .*" { puts $nf "set user \"$siteuser\"" } default { puts $nf $defline } } } close $defs close $nf file copy -force "$env(HOME)/.secpanel/profiles/newfiles.tmp" "$env(HOME)/.secpanel/profiles/$filetitle.profile" unset filetitle file delete -force "$env(HOME)/.secpanel/profiles/newfiles.tmp" } close $sf } proc do_backup {} { global env set butime [clock seconds] file copy -force "$env(HOME)/.secpanel" "$env(HOME)/secpanel_backup$butime" puts "Put Backup of $env(HOME)/.secpanel to $env(HOME)/secpanel_backup$butime" } proc moveprofs {} { global env file delete -force "$env(HOME)/.secpanel/default.profile" foreach file [glob -nocomplain "$env(HOME)/.secpanel/*.profile"] { file copy -force "$file" "$env(HOME)/.secpanel/profiles" file delete -force "$file" } file delete -force "$env(HOME)/.secpanel/sites" } puts "Doing profile conversion..." do_backup file mkdir "$env(HOME)/.secpanel/profiles" cp moveprofs ./usr/local/lib/secpanel/spdistkey0000755000000000000000000000326711337466421016140 0ustar rootroot#!/bin/bash ########################################################################## # SecPanel.dist - Key-Distribution # Shellscript for distributing public keys to remote hosts # # Version SecPanel 0.6.0 # Author: Steffen Leich-Nienhaus ########################################################################## if [ -z $4 ] then cat < EOF exit 2 fi HOST=$1 PORT=$2 USER=$3 IDENTITY=$4 SSHBIN=$5 if [ ! -s $IDENTITY ] then echo "Keyfile $IDENTITY does not exist or has size zero" do_exit fi cat </dev/null; grep '$(cat $IDENTITY)' \$HOME/.ssh/authorized_keys > /dev/null 2>&1" DISTRET=$? if [ $DISTRET = 0 ] then echo echo " Your public key is already on the remote host" echo elif [ $DISTRET = 255 ] then echo echo "There was an error connecting to the remote site" echo -e "Parameters:\n\tHost:\t$HOST\n\tUser:\t$USER" echo echo "Canceling the key-transfer" do_exit else echo echo " The key could not be found on this host" echo " -> Transfering your public key to remote host" echo $SSHBIN -l $USER $HOST "cat >> \$HOME/.ssh/authorized_keys; chmod 600 \$HOME/.ssh/authorized_keys; chmod 700 \$HOME/.ssh" < $IDENTITY fi ./usr/local/lib/secpanel/dppw.tcl0000644000000000000000000001326011337466421015643 0ustar rootroot#!/bin/sh # -*- tcl -*- # Executing wish #\ exec wish "$0" "$@" ############################################################################# # Visual Tcl v1.22 Project # ################################# # GLOBAL VARIABLES # global widget; ################################# # USER DEFINED PROCEDURES # proc {main} {argc argv} { global mode set mode [lindex $argv 0] if [catch {exec which gpg} err] { .top34.fra36.ent41 insert 0 "No GnuPG for encryption found!" .top34.fra36.ent41 config -show "" -state disabled .top34.fra37.but39 config -command exit } } proc direader {dir ts} { global env set return "" set tarfile [open "$env(HOME)/.secpanel/.tarfiles" w] foreach f [lsort [glob -nocomplain $dir/* $dir/.*]] { if {[regexp "\/\\.\\.$" $f] || [regexp "\/\\.$" $f]} { continue } puts $tarfile $f } close $tarfile return $return } proc {returnpw} {} { global widget env mode set ts [clock clicks] exec echo [.top34.fra36.ent41 get] > $env(HOME)/.secpanel/.pw_$ts if {$mode == "de"} { catch {exec gpg -q --no-verbose --passphrase-file $env(HOME)/.secpanel/.pw_$ts -d $env(HOME)/.secpanel/spdata.lck | tar tzfv -} err exec echo $err > $env(HOME)/.secpanel/err } elseif {$mode == "en"} { direader "$env(HOME)/.secpanel" $ts catch {exec tar -c -z -f - -T $env(HOME)/.secpanel/.tarfiles | gpg -q --no-verbose -c --passphrase-file pf > $env(HOME)/.secpanel/spdata.lck} err exec echo $err > $env(HOME)/.secpanel/err } else { direader "$env(HOME)/.secpanel" $ts puts "no valid operation mode..." exit } file delete -force "$env(HOME)/.secpanel/.pw_$ts" exit } proc {Window} {args} { global vTcl set cmd [lindex $args 0] set name [lindex $args 1] set newname [lindex $args 2] set rest [lrange $args 3 end] if {$name == "" || $cmd == ""} {return} if {$newname == ""} { set newname $name } set exists [winfo exists $newname] switch $cmd { show { if {$exists == "1" && $name != "."} {wm deiconify $name; return} if {[info procs vTclWindow(pre)$name] != ""} { eval "vTclWindow(pre)$name $newname $rest" } if {[info procs vTclWindow$name] != ""} { eval "vTclWindow$name $newname $rest" } if {[info procs vTclWindow(post)$name] != ""} { eval "vTclWindow(post)$name $newname $rest" } } hide { if $exists {wm withdraw $newname; return} } iconify { if $exists {wm iconify $newname; return} } destroy { if $exists {destroy $newname; return} } } } proc init {argc argv} { } init $argc $argv ################################# # VTCL GENERATED GUI PROCEDURES # proc vTclWindow. {base {container 0}} { if {$base == ""} { set base . } ################### # CREATING WIDGETS ################### if {!$container} { wm focusmodel $base passive wm geometry $base 200x200+0+0 wm maxsize $base 1284 1002 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm withdraw $base wm title $base "vt" } ################### # SETTING GEOMETRY ################### } proc vTclWindow.top34 {base {container 0}} { if {$base == ""} { set base .top34 } if {[winfo exists $base] && (!$container)} { wm deiconify $base; return } ################### # CREATING WIDGETS ################### if {!$container} { toplevel $base -class Toplevel \ -borderwidth "4" wm focusmodel $base passive wm geometry $base 204x92+344+247 wm maxsize $base 1284 1002 wm minsize $base 115 1 wm overrideredirect $base 0 wm resizable $base 1 1 wm deiconify $base wm title $base "SecPanel - Data Protection" } frame $base.fra35 \ -relief "groove" -height "75" -width "125" label $base.fra35.lab40 \ -anchor "nw" -borderwidth "0" -relief "raised" \ -text "Enter password:" frame $base.fra36 \ -relief "groove" -height "75" -width "125" entry $base.fra36.ent41 -show "*\#*" bind $base.fra36.ent41 { returnpw } frame $base.fra37 \ -borderwidth "2" -relief "groove" -height "75" -width "125" button $base.fra37.but38 \ -relief "groove" -text "Cancel" -command exit button $base.fra37.but39 \ -command "returnpw" -relief "groove" -text "Continue" ################### # SETTING GEOMETRY ################### grid columnconf $base 0 -weight 1 grid rowconf $base 0 -weight 1 grid $base.fra35 \ -in $base -column "0" -row "0" -columnspan "1" -rowspan "1" -padx "2" \ -pady "2" -sticky "nesw" grid columnconf $base.fra35 0 -weight 1 grid rowconf $base.fra35 0 -weight 1 grid $base.fra35.lab40 \ -in $base.fra35 -column "0" -row "0" -columnspan "1" -rowspan "1" \ -sticky "nesw" grid $base.fra36 \ -in $base -column "0" -row "1" -columnspan "1" -rowspan "1" -padx "2" \ -pady "2" -sticky "ew" grid columnconf $base.fra36 0 -weight 1 grid $base.fra36.ent41 \ -in $base.fra36 -column "0" -row "0" -columnspan "1" -rowspan "1" \ -sticky "ew" grid $base.fra37 \ -in $base -column "0" -row "2" -columnspan "1" -rowspan "1" -padx "2" \ -pady "2" -sticky "ew" grid $base.fra37.but38 \ -in $base.fra37 -column "0" -row "0" -columnspan "1" -rowspan "1" grid $base.fra37.but39 \ -in $base.fra37 -column "1" -row "0" -columnspan "1" -rowspan "1" } Window show . Window show .top34 tkwait visibility .top34 focus .top34.fra36.ent41 grab .top34 main $argc $argv ./usr/local/bin/0000755000000000000000000000000011355055353012371 5ustar rootroot./usr/local/bin/secpanel0000755000000000000000000017553211337503626014127 0ustar rootroot#!/bin/sh # -*- tcl -*- # Executing wish #\ exec wish "$0" "$@" ####################################################################### # # secpanel - Graphical user interface for managing SSH- and # SFTP-connections # # Author: Steffen Leich # http://secpanel.net # # 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 2 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, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # ####################################################################### set spversion 0.6.0 set libdir "[file dirname [info script]]/../lib/secpanel" # set libdir "$env(HOME)/secpanel_devel/secpanel-0x/lib" set sshdir "$env(HOME)/.ssh" global actdirsel; global questres; global userres; proc init {argc argv} { global env configs tk_version launcher defident libdir agent wins platform if {! [info exists env(DISPLAY)] || $env(DISPLAY) == ""} { catch {exec "uname -a"} ver if {! [regexp -nocase "macintosh" $ver]} { puts "No valid Xwindow DISPLAY environment or MacOSX platform -> exiting secpanel" exit } else { set platform "macosx" } } else { set platform "linux" } set mintcl 8.0 set mintk 8.0 if {[info tclversion]<$mintcl || $tk_version<$mintk} { puts -nonewline stderr "For running secpanel:\nTcl $mintcl/Tk $mintk minimum versions required. " puts stderr "You have Tcl [info tclversion]/Tk $tk_version" exit 1 } set secpaneldir "$env(HOME)/.secpanel" if {! [file exists $secpaneldir]} { file mkdir $secpaneldir exec chmod 700 $secpaneldir puts "Created config-dir $secpaneldir (chmod 700)..." } if [file exists $secpaneldir/spdata.lck] { puts "Found protected secpanel data" # exec $libdir/protect.sh $libdir exec $libdir/dppw.tcl "de" } if {! [file exists $secpaneldir/.runfiles]} { file mkdir $secpaneldir/.runfiles } if {! [file exists $secpaneldir/profiles]} { file mkdir $secpaneldir/profiles } set configfile "$env(HOME)/.secpanel/config" if {! [file exists $configfile]} { file copy "$libdir/default.config" "$configfile" } source $configfile initconfigs array set gshorts {fore foreground back background} foreach gcolval [array names gshorts] { if [info exists configs($gcolval)] { option add *$gshorts($gcolval) $configs($gcolval) } } array set shorts {entfore Entry.foreground entback Entry.background \ listfore Listbox.foreground listback Listbox.background} foreach colval [array names shorts] { if [info exists configs($colval)] { option add *$shorts($colval) $configs($colval) if {$colval == "listfore"} { option add *Text.foreground $configs($colval) } if {$colval == "listback"} { option add *Text.background $configs($colval) } } } set fb "" set fi "" if {([info exists configs(sysfonts)] && ($configs(sysfonts) != 1)) || ! [info exists configs(sysfonts)]} { if [info exists configs(fontbold)] { if $configs(fontbold) { set fb "bold" } } if [info exists configs(fontitalic)] { if $configs(fontitalic) { set fi "italic" } } if {[info exists configs(fontfam)] && [info exists configs(fontsize)]} { option add *Font "\"$configs(fontfam)\" $configs(fontsize) $fb $fi" } } set agent 0 } proc initconfigs {} { global configs foreach {bintag binprog} \ {sshbin ssh keygenbin ssh-keygen agentbin ssh-agent \ addbin ssh-add askpassbin ssh-askpass scpbin scp sftpbin Filezilla termver Xterm browserbin firefox \ } { if {! [info exists configs($bintag)]} { set configs($bintag) $binprog } } if {! [info exists configs(sshver)]} { set configs(sshver) "OpenSSH" } if {! [info exists configs(termver)]} { set configs(termver) "Xterm" } if {! [info exists configs(protectdata)]} { set configs(protectdata) 0 } } init $argc $argv proc browsebin {which} { global widget choosefile $widget([set which]ent) "actdirsel" "Open" "" } proc manage_remote {mode} { global widget rfts configs libdir env termtype ramhost ramport ramuser set usetermver $configs(termver) set icontag "" set configs(xtermbin) $termtype([set usetermver]_path) set titlepar $termtype([set usetermver]_titlepar) set quotepar $termtype([set usetermver]_quotepar) set execpar $termtype([set usetermver]_execpar) if {[info exists termicon] && $termicon} { set icontag $termtype([set usetermver]_iconpar) } # switch -regexp $mode { init { if {[selection own] == $widget(specsites)} { set actentry [$widget(specsites) get active] set rmprof [retprof $actentry] source "$env(HOME)/.secpanel/profiles/$rmprof.profile" set ramhost $host set ramport $port set ramuser $user } else { showmessage "No entry selected" "" return } if {[winfo exists .top40]} { if [showconfirm\ "There is another remote management session. Cancel this former session?"\ .top40] { manage_remote cancel } else { return } } set rfts [clock clicks] Window show .top40 .top40.lab51 config -text "Remote Account Manager for $title ($ramuser@$ramhost)" set connstring "$libdir/secpanel_remoteconf.sh $ramhost $ramport $ramuser $configs(scpbin) read $rfts" set runstring "exec $configs(xtermbin) $execpar $quotepar $quotepar" provrunfile term nobg $connstring $runstring set shostsfile "$env(HOME)/.secpanel/.runfiles/ram.$rfts/.shosts" set keysfile "$env(HOME)/.secpanel/.runfiles/ram.$rfts/authorized_keys" if {[file exists $shostsfile]} { $widget(remoteshostsfile) insert end [exec cat $shostsfile] } if {[file exists $keysfile]} { $widget(remotekeysfile) insert end [exec cat $keysfile] } $widget(remotercfile) insert end "Not yet supported, breaks scp..." } cancel { file delete -force "$env(HOME)/.secpanel/.runfiles/ram.$rfts" unset rfts Window destroy .top40 } write { if [showconfirm "Really write back remote configuration?" ".top40"] { set shostsfile [open "$env(HOME)/.secpanel/.runfiles/ram.$rfts/.shosts" w] puts -nonewline $shostsfile [$widget(remoteshostsfile) get 1.0 end] close $shostsfile set keysfile [open "$env(HOME)/.secpanel/.runfiles/ram.$rfts/authorized_keys" w] puts -nonewline $keysfile [$widget(remotekeysfile) get 1.0 end] close $keysfile set connstring "$libdir/secpanel_remoteconf.sh $ramhost $ramport $ramuser $configs(scpbin) write $rfts" set runstring "exec $configs(xtermbin) $execpar $quotepar $quotepar" provrunfile term bg $connstring $runstring Window destroy .top40 } } } } proc save_globals {mode} { global widget env configs launcher defident wins set conffile [open "$env(HOME)/.secpanel/config" w] switch -regexp $mode { bins { array set bindefs { \ ssh ssh keygen ssh-keygen agent ssh-agent add ssh-add \ askpass ssh-askpass scp scp browser firefox } foreach f {ssh keygen agent add askpass scp browser} { if {[$widget([set f]ent) get] == ""} { $widget([set f]ent) insert 0 $bindefs($f) } puts $conffile "set configs([set f]bin) \"[$widget([set f]ent) get]\"" set configs([set f]bin) [$widget([set f]ent) get] } puts $conffile "set configs(sshver) \"$configs(sshver)\"" puts $conffile "set configs(termver) \"$configs(termver)\"" puts $conffile "set configs(sftpbin) \"$configs(sftpbin)\"" if [info exists defident] { puts $conffile "set defident \"$defident\"" } puts $conffile "set launcher $launcher" } "geom|startsat|color|fonts|scp|agent|chdef|protectdata" { foreach f {ssh keygen agent add askpass scp browser} { puts $conffile "set configs([set f]bin) \"$configs([set f]bin)\"" } puts $conffile "set configs(sshver) \"$configs(sshver)\"" puts $conffile "set configs(termver) \"$configs(termver)\"" puts $conffile "set configs(sftpbin) \"$configs(sftpbin)\"" puts $conffile "set launcher $launcher" if [info exists defident] { puts $conffile "set defident \"$defident\"" } } } foreach col {fore back entfore entback listfore listback} { if [info exists configs($col)] { puts $conffile "set configs($col) $configs($col)" } } foreach font {fontfam fontsize fontbold fontitalic sysfonts} { if [info exists configs($font)] { puts $conffile "set configs($font) \"$configs($font)\"" } } if [info exists configs(wingeom)] { puts $conffile "set configs(wingeom) \"$configs(wingeom)\"" } if [info exists configs(protectdata)] { puts $conffile "set configs(protectdata) \"$configs(protectdata)\"" } foreach w [array names wins] { puts $conffile "set wins($w) \"$wins($w)\"" } if [info exists configs(startsat)] { puts $conffile "set configs(startsat) \"$configs(startsat)\"" } close $conffile showstatus "Global configs saved" } proc chbutton {var but} { global fgdef bgdef if {[set $var]} { $but config -state disabled } else { $but config -state normal } } proc chcol {var button title} { set ret [colorchoose ".top17" $title] if {$ret != ""} { $button config -background $ret } } proc colorchoose {parent title} { set col [tk_chooseColor -parent $parent -title "secpanel - $title"] return $col } proc fontman {mode} { global configs set names .top23.fra36.cpd37.01 set sizes .top23.fra36.cpd38.01 switch -exact $mode { show { Window show .top23 set names .top23.fra36.cpd37.01 set sizes .top23.fra36.cpd38.01 foreach f [lsort [font families]] { $names insert end $f } set fs 6 while {$fs <= 60} { $sizes insert end $fs incr fs } if $configs(fontbold) { set fb "bold" } else { set fb "" } if $configs(fontitalic) { set fi "italic" } else { set fi "" } if {! $configs(sysfonts)} { if {[info exists configs(fontfam)] && [info exists configs(fontsize)]} { set label "$configs(fontfam) $configs(fontsize)" .top23.lab30 config \ -font "\"$configs(fontfam)\" $configs(fontsize) $fi $fb" } else { set label "" } .top23.lab30 config -text "$label" } else { .top23.lab30 config -text "Using external sysfonts" } set fc 0 if [info exists configs(fontfam)] { foreach fn [$names get 0 end] { if {$fn =="$configs(fontfam)"} { $names activate $fc $names see $fc } incr fc } } set sc 0 if [info exists configs(fontsize)] { foreach fs [$sizes get 0 end] { if {$fs =="$configs(fontsize)"} { $sizes activate $sc $sizes see $sc } incr sc } } # activate listenelement in fontfam und size mit richtigen Werten # font-ex.text mit eingestellten werten } save { set configs(fontfam) [$names get active] set configs(fontsize) [$sizes get active] save_globals fonts Window destroy .top23 } ul { if {! $configs(sysfonts)} { set name [$names get active] set size [$sizes get active] if $configs(fontbold) { set fb "bold" } else { set fb "" } if $configs(fontitalic) { set fi "italic" } else { set fi "" } .top23.lab30 config -text "[$names get active] [$sizes get active]" -font "\"$name\" $size $fi $fb" } else { .top23.lab30 config -text "Using external sysfonts" } } } } proc colorman {mode} { global env configs \ foredef backdef entforedef entbackdef listforedef listbackdef foreach {name widg} {fore 37 back 38 entfore 39 \ entback 40 listfore 41 listback 42} { set colbut[set name] ".top32.fra33.but[set widg]" } set colvals [list fore back entfore entback listfore listback]; switch -exact $mode { 1 { Window show .top32 foreach colval $colvals { if [info exists configs($colval)] { [set colbut[set colval]] configure -background $configs($colval) } else { set [set colval]def 1 } } } save { foreach colval $colvals { if {! [set [set colval]def]} { set configs([set colval]) [[set colbut[set colval]] cget -background] } else { if [info exists configs([set colval])] { unset configs([set colval]) } } } Window destroy .top32 save_globals color } default { set col [colorchoose .top32 "Foreground Color"] if {$col != ""} { [set colbut[set mode]] config \ -background $col -activebackground $col return } else { return } } } } proc showmenu {} { if [winfo exists .pm1] { Window destroy .pm1 } if [winfo exists .pm2] { Window destroy .pm2 } menu .pm1 -tearoff 0 -borderwidth 1 .pm1 add command -label "Connect" -command "connect" .pm1 add command -label "Edit" -command "propconn specsites" .pm1 add command -label "Delete" -command "delconn" .pm1 add command -label "Show info" -state "disabled" .pm1 add command -label "Manage remote account" -command "manage_remote init" .pm1 add cascade -label "Export as..." -menu .pm1.pm2 .pm1 add separator .pm1 add command -label "New connection" -command "newconn 1" menu .pm1.pm2 -tearoff 0 -borderwidth 1 .pm1.pm2 add command -label "Shellscript" -command "export sh" -state "disabled" .pm1.pm2 add command -label "SSH configfile" -command "export ssh" -state "disabled" .pm1.pm2 add command -label "GNOME icon" -command "export gnome" -state "disabled" .pm1.pm2 add command -label "KDE icon" -command "export kde" -state "disabled" tk_popup .pm1 [winfo pointerx .top17] [winfo pointery .top17] } proc historyman {mode "categ {}" "text {}"} { global env histjob configs wins switch -exact $mode { write { set hf [open "$env(HOME)/.secpanel/history" a] puts $hf "$categ#[clock seconds]#$text" close $hf if [winfo exists .top26] { historyman print } } show { Window show .top26 if {[info exists configs(wingeom)] && $configs(wingeom)} { if [info exists wins(hist)] { wm geometry ".top26" $wins(hist) } } set histjob 1 historyman print } report { set repdir "$env(HOME)/.secpanel/reports" if {! [file exists "$repdir"]} { file mkdir "$repdir" } set index [open "$repdir/index.html" w] puts $index "\n\n\n\n\n\n" close $index set header [open "$repdir/header.html" w] puts $header "Report of Secure Shell actions
Generated by secpanel [exec date]" close $header set panel [open "$repdir/panel.html" w] puts $panel "Actions\n
\nSSH connect
\nSFTP connect
\nKeygen
\nKeydist
\nAgent
" close $panel if {! [file exists "$env(HOME)/.secpanel/history"]} { showmessage "No history available" .top26 return } foreach m {1 2 4 5 6} { set modef[set m] [open "$repdir/[set m].html" w] puts [set modef[set m]] "\n" } set hf [open "$env(HOME)/.secpanel/history" r] while {[gets $hf line] >= 0} { set elems [split $line "#"] set actmode [set modef[lindex $elems 0]] puts $actmode "\n" } foreach m2 {1 2 4 5 6} { puts [set modef[set m2]] "
[clock format [lindex $elems 1]]
[lindex $elems 2]
\n" close [set modef[set m2]] } showmessage "Report for actual history generated in ~/.secpanel/reports/index.html" .top26 exec $configs(browserbin) "file:$env(HOME)/.secpanel/reports/index.html" & } print { set text .top26.cpd27.03 $text delete 1.0 end if {! [file exists "$env(HOME)/.secpanel/history"]} { return } set hf [open "$env(HOME)/.secpanel/history" r] while {[gets $hf line] >= 0} { set elems [split $line "#"] if {[lindex $elems 0] == $histjob} { $text insert end "[clock format [lindex $elems 1]] - [lindex $elems 2]\n" } } $text see end close $hf } clear { if [showconfirm "Really clear the history?\n(Keeping $categ days)" ".top26"] { if {$categ != "0"} { set hfile "$env(HOME)/.secpanel/history" if {! [file exists $hfile]} { showmessage "No history available" .top26 return } set now [clock seconds] set hf [open "$hfile" r] while {[gets $hf line] >= 0} { set elems [split $line "#"] if {[lindex $elems 1] >= [expr $now - ($categ * 24 * 60 * 60)]} { lappend kept $line } } close $hf set hf [open "$hfile" w] foreach l $kept { puts $hf $l } close $hf } else { file delete "$env(HOME)/.secpanel/history" } historyman print } else { return } } } } proc showcomm {mode} { global widget lfstemp rfstemp set actline [$widget([set mode]forwards) get active] if [regsub { -> } $actline : out] { $widget([set mode]fcomment) config -text [set [set mode]fstemp($out)] } } proc add_forw {mode} { global widget lfstemp rfstemp set fhost [$widget([set mode]fhost) get] set fin [$widget([set mode]fin) get] set fout [$widget([set mode]fout) get] set fcomment [$widget([set mode]fcommentent) get] set lhostname "" set rhostname "" if {$fhost == ""} { set fht [set [set mode]hostname] } else { set fht $fhost } if {$fin != "" && $fout != ""} { $widget([set mode]fcomment) config -text "" foreach an [array names [set mode]fstemp] { if {$an == "$fin:$fht:$fout"} { $widget([set mode]fcomment) config -text "Forward exists" return } } $widget([set mode]forwards) insert end "$fin -> $fht:$fout" set [set mode]fstemp($fin:$fht:$fout) $fcomment $widget([set mode]fin) delete 0 end $widget([set mode]fout) delete 0 end $widget([set mode]fhost) delete 0 end $widget([set mode]fcommentent) delete 0 end focus $widget([set mode]fin) $widget([set mode]forwards) see end } } proc del_forw {mode} { global widget lfstemp rfstemp set lwin .top43 set rwin .top51 if {[selection own] == $widget([set mode]forwards)} { set actline [$widget([set mode]forwards) get active] if [regsub { -> } $actline : out] { unset [set mode]fstemp($out) $widget([set mode]forwards) delete active } } else { showmessage "No forwarding selected" [set [set mode]win] } selection clear } proc save_forwards {mode} { global widget rfs rfstemp lfs lfstemp set lwin .top43 set rwin .top51 if [info exists [set mode]fs] { unset [set mode]fs } array set [set mode]fs [array get [set mode]fstemp] if [info exists [set mode]fstemp] { unset [set mode]fstemp } Window destroy [set [set mode]win] } proc open_forwardings {mode} { global widget lfs rfs lfstemp rfstemp set lwin .top43 set rwin .top51 Window show [set [set mode]win] $widget([set mode]forwards) delete 0 end if [info exists [set mode]fstemp] { unset [set mode]fstemp } if [info exists [set mode]fs] { array set [set mode]fstemp [array get [set mode]fs] } foreach fe [array names [set mode]fstemp] { if [regsub : $fe { -> } out] { $widget([set mode]forwards) insert end $out } } } proc changetab {mode} { global libdir agent widget wins configs switch -exact $mode { "small" { if {! [$widget(specsites) index end] > 0} { showmessage "No conncections available, please add one..." "" return } wm withdraw .top17 Window show .top27 if {[info exists configs(wingeom)] && $configs(wingeom)} { if [info exists wins(sat)] { wm geometry ".top27" $wins(sat) } } .top27.but27 config -image [image create photo -file "$libdir/images/swinback_gr.gif"] if {$agent == 1 || $agent == "ext"} { .top27.but27 config -bg green -fg black } else { .top27.but27 config -bg red } specsiteupdate "ss" bind .top27 { changetab big } } "big" { wm withdraw .top27 destroyfilter .top27 Window show .top17 } "default" { foreach f {21 35 44 46} { if {[grid info .top17.fra[set f]] != ""} { grid remove .top17.fra[set f] } } array set frames {connect 46 terminal 44 key 35 ssh 21} grid .top17.fra$frames($mode) -in .top17 \ -column 0 -row 1 -columnspan 1 -rowspan 1 \ -ipadx 2 -ipady 2 -padx 2 -pady 2 -sticky nesw showstatus "" } } } proc choosefile {{entry ""} {startdir ""} {mode ""} {task ""}} { global actdirsel env widget switch -exact $task { "identityent" { set entry $widget(identityent) set startdir $env(HOME)/.ssh set mode "Open" } "cfgfileent" { set entry $widget(cfgfileent) set startdir $env(HOME)/.ssh set mode "Open" } "keygen" { set entry "$widget(identpath)" set startdir "$env(HOME)/.ssh" set mode "Save" } "*" { } } if {$startdir == "actdirsel"} { if [info exists actdirsel] { set startdir $actdirsel } else { set startdir "/usr/" } } set choice [tk_get[set mode]File -initialdir $startdir] if {$choice != ""} { $entry delete 0 end $entry insert 0 $choice set actdirsel [file dirname $choice] } else { return } } proc showmessage_wizard {text} { global widget $widget(messageline) config -text "$text" } proc distwizard {mode direct} { global widget key connectionprofiles switch -exact $mode { "key" { switchtab_wizard "key" update_keylist $widget(contbutton) config -command "distwizard host f" -text "Continue" -state "active" $widget(backbutton) config -state "disabled" -command "" showmessage_wizard "" } "host" { if {$direct == "f"} { set key [$widget(distkeyentry) get] if {$key == ""} { showmessage_wizard "Please choose key!" return } } switchtab_wizard "host" $widget(contbutton) config -command "distwizard confirm f" -text "Continue" -state "active" $widget(backbutton) config -command "distwizard key b" -state "active" showmessage_wizard "" } "confirm" { if {$direct == "f"} { if {[selection own] != $widget(distconnlist)} { showmessage_wizard "Please choose connection!" return } set connections [$widget(distconnlist) curselection] } set connectiontitles "" set connectionprofiles "" foreach connentry $connections { set connectiontitles [concat $connectiontitles [$widget(distconnlist) get $connentry]] lappend connectionprofiles [retprof [$widget(distconnlist) get $connentry]] } switchtab_wizard "confirm" $widget(finishmessage) config -text "Distribute\n$key\nto connection\n[lsort $connectiontitles]" $widget(contbutton) config -command "distwizard finish f" -text "Distribute key" -state "active" $widget(backbutton) config -command "distwizard host b" -state "active" showmessage_wizard "" } "finish" { Window destroy .top53 distkey "\"$key\"" "$connectionprofiles" } } } proc distkey {key connectionprofiles} { global env widget libdir configs termtype set connstring "" foreach actconn $connectionprofiles { source "$env(HOME)/.secpanel/profiles/$actconn.profile" if {$user == ""} { set user [askforuser] if {$user == "#####"} { return } } set singleactstring "$libdir/spdistkey $host $port $user $key $configs(sshbin)" set connstring "$connstring $singleactstring" set connstring "$connstring \n\n\necho ==============================================================\n\n" historyman write 5 "$key -> $user@$host" } set connstring "$connstring echo echo \"Key-Distribution finished\nPress to continue\" read out exit" set usetermver $configs(termver) set icontag "" set configs(xtermbin) $termtype([set usetermver]_path) set titlepar $termtype([set usetermver]_titlepar) set quotepar $termtype([set usetermver]_quotepar) set execpar $termtype([set usetermver]_execpar) if {[info exists termicon] && $termicon} { set icontag $termtype([set usetermver]_iconpar) } # set runstring "exec $configs(xtermbin) $titlepar \"secpanel Key-Distribution\" $execpar $quotepar $quotepar" provrunfile term bg $connstring $runstring } proc command_trace {mode "text {}"} { global env configs wins set tracetext ".top24.cpd25.03" set tracefile "$env(HOME)/.secpanel/.runfiles/trace.log" switch -exact $mode { "view" { Window show .top24 if {[info exists configs(wingeom)] && $configs(wingeom)} { if [info exists wins(trace)] { wm geometry ".top24" $wins(trace) } } $tracetext delete 1.0 end if [file exists "$tracefile"] { set tf [open "$tracefile" r] while {[gets $tf line] >= 0} { set elems [split $line "#"] $tracetext insert end "[clock format [lindex $elems 0]] - [lindex $elems 1]\n" } close $tf } else { $tracetext insert end "No tracelog available" } $tracetext see end } "save" { set tf [open "$tracefile" a] puts $tf "[clock seconds]#[quote_double_space $text]" close $tf if [winfo exists .top24] { command_trace "view" } } } } proc switchtab_wizard {mode} { global widget foreach f {key host confirm} { if {[grid info $widget([set f]frame)] != ""} { grid remove $widget([set f]frame) } } grid $widget([set mode]frame) -in .top53 -column 0 -row 1 -columnspan 1 -rowspan 1 -ipadx 2 -ipady 2 -padx 2 -pady 2 -sticky nesw } proc clear_prmenu {} { global env widget $widget(profiles) delete 0 end foreach prof [lsort [glob -nocomplain "$env(HOME)/.secpanel/profiles/*.profile"]] { $widget(profiles) insert end "[file rootname [file tail $prof]]" } } proc clear_profiles {} { global env widget noagentforward x11forward stricthost nopriv lfs rfs \ verbose quiet fork gateway compress algo compressval \ connwait termicon sshverconnect ipverconnect askuserspec noexec foreach b {noagentforward x11forward stricthost nopriv \ verbose quiet fork gateway compress connwait termicon askuserspec noexec} { set [set b] 0 } set algo "default" set compressval 6 foreach e {profile host command title subsys identity cfgfile user port} { $widget([set e]ent) delete 0 end } if [info exists lfs] { unset lfs } if [info exists rfs] { unset rfs } $widget(userent) insert 0 "$env(USER)" $widget(portent) insert 0 "22" set sshverconnect "2" set ipverconnect "4" if {[winfo exists .top43]} { Window destroy .top43 open_forwardings l } if {[winfo exists .top51]} { Window destroy .top51 open_forwardings r } } proc provrunfile {term bg connstring runstring} { global env platform libdir if {$bg=="bg"} { set bgtag "&" } else { set bgtag "" } if {$term == "term"} { set cf "$env(HOME)/.secpanel/.runfiles/runproc.[clock clicks]" set connfile [open $cf w] puts $connfile "#!/bin/sh\n" puts $connfile $connstring if {$bg == "nobg"} { puts $connfile "\necho \"secpanel: Cleaning up handling data for this operation...\";\nrm -f $cf" } close $connfile exec chmod +x $cf set cfr "$cf-run" set crfile [open "$cfr" w] puts $crfile [regsub {} $runstring $cf] close $crfile exec chmod +x $cfr exec $cfr $bgtag } else { set cfr "$env(HOME)/.secpanel/.runfiles/runproc.[clock clicks]-run" set crfile [open "$cfr" w] puts $crfile "$runstring $connstring" close $crfile exec chmod +x $cfr exec $cfr $bgtag } } proc connect_sftp {} { global widget env configs libdir if {! [$widget(specsites) index end] > 0} { showmessage "No connections available, please use \"New\"" "" return } if {[selection own] != $widget(specsites)} { showmessage "Please select connection" .top17 return } set connsel [$widget(specsites) curselection] set connstring "" foreach connselentry $connsel { set actconn [retprof [$widget(specsites) get $connselentry]] source "$env(HOME)/.secpanel/profiles/$actconn.profile" if {$user == ""} { set user [askforuser] if {$user == "#####"} { return } } switch -exact $configs(sftpbin) { "Filezilla" { set runstring "filezilla -l interactive " } "GNOME-Nautilus" { set runstring "nautilus " } "KDE-Konqueror" { set runstring "konqueror " } } set connstring "sftp://$user@$host:$port" command_trace save "$runstring$connstring" provrunfile noterm bg "" $runstring$connstring historyman write 2 "$connstring" } } proc multiconnect {mode} { global widget env configs libdir if {! [$widget(specsites) index end] > 0} { showmessage "No connections available, please use \"New\"" "" return } if {[selection own] != $widget(specsites)} { showmessage "Please select connection" .top17 return } set connsel [$widget(specsites) curselection] set connstring "" foreach connselentry $connsel { set actconn [retprof [$widget(specsites) get $connselentry]] source "$env(HOME)/.secpanel/profiles/$actconn.profile" if {$user == ""} { set user [askforuser] if {$user == "#####"} { return } } switch -exact $mode { "multixterm" { set connstring "$connstring $user@$host:$port" } "cssh" { set connstring "$connstring $user@$host:$port" } } } switch -exact $mode { "multixterm" { set runstring "multixterm -xc \"ssh %n\"" } "cssh" { set runstring "cssh" } } command_trace save "$runstring $connstring" provrunfile noterm bg $connstring $runstring } proc connect {{cm ""}} { global widget env configs libdir termtype set sshverconnect 1 if {$cm == "ss"} { set connsel 1 } else { if {! [$widget(specsites) index end] > 0} { showmessage "No connections available, please use \"New\"" "" return } if {[selection own] != $widget(specsites)} { showmessage "Please select connection" .top17 return } set connsel [$widget(specsites) curselection] } foreach connselentry $connsel { if {$cm == "ss"} { set actconn [retprof [$widget(sspecsites).sspecmenu entrycget active -label]] } else { set actconn [retprof [$widget(specsites) get $connselentry]] } source "$env(HOME)/.secpanel/profiles/$actconn.profile" if {$user == ""} { set user [askforuser] if {$user == "#####"} { return } } if {[array size lfs] > 0} { foreach lf [array names lfs] { if {[regsub {} [lindex [split $lf :] 1] $host th]} { append lf_tag " -L [lindex [split $lf :] 0]:$th:[lindex [split $lf :] 2] " } else { append lf_tag " -L [lindex [split $lf :] 0]:[lindex [split $lf :] 1]:[lindex [split $lf :] 2] " } } } else { set lf_tag " " } set localhost [info hostname] if {[array size rfs] > 0} { foreach rf [array names rfs] { if {[regsub {} [lindex [split $rf :] 1] $localhost lh]} { append rf_tag " -R [lindex [split $rf :] 0]:$lh:[lindex [split $rf :] 2] " } else { append rf_tag " -R [lindex [split $rf :] 0]:[lindex [split $rf :] 1]:[lindex [split $rf :] 2] " } } } else { set rf_tag " " } if {$user != ""} { set user_tag "-l $user " } else { set user_tag " " } if {$port == 22 || $port == ""} { set port_tag " " } else { set port_tag "-p $port " } if {$algo != "default" || $algo == ""} { set algo_tag "-c $algo " } else { set algo_tag " " } if {$identity != ""} { set ident_tag "-i $identity " } else { set ident_tag " " } if {[info exists cfgfile] && $cfgfile != ""} { set cfgfile_tag "-F $cfgfile " } else { set cfgfile_tag " " } if {[info exists noagentforward] && $noagentforward} { set noagentforward_tag "-a " } else { set noagentforward_tag "-A " } if {$command != "" && ([info exists noexec] && ! $noexec) && \ ([info exists subsys] && $subsys == "")} { set command_tag "$command" } elseif {[info exists subsys] && $subsys != ""} { set command_tag "-s $subsys" } else { set command_tag "" } if $compress { # openssh if {$configs(sshver) == "OpenSSH"} { set compressval_tag "-o \'CompressionLevel [set compressval]\' " } else { set compressval_tag "-o CompressionLevel=$compressval " } } else { set compressval_tag " " } array set bools { "x11forward" "-x" \ "stricthost" "-o StrictHostKeyChecking=yes" \ "nopriv" "-P" \ "verbose" "-v" \ "quiet" "-q" \ "fork" "-f" \ "gateway" "-g" \ "compress" "-C" \ "noexec" "-N" } # foreach f [array names $bools] foreach f {x11forward stricthost nopriv verbose \ quiet fork gateway compress noexec} { if {[info exists $f] && [set $f]} { set [set f]_tag "$bools($f) " } else { set [set f]_tag " " } } if [info exists sshverconnect] { set sshvertag "-[set sshverconnect] " } if [info exists ipverconnect] { set ipvertag "-[set ipverconnect] " } else { set ipvertag " " } # openssh if {$configs(sshver) == "OpenSSH"} { if {[info exists x11forward] && ! $x11forward} { set x11forward_tag "-X " } if {[info exists noexec] && $noexec} { set noexec_tag "-N " } } set usetermver $configs(termver) set icontag "" set configs(xtermbin) $termtype([set usetermver]_path) set titlepar $termtype([set usetermver]_titlepar) set quotepar $termtype([set usetermver]_quotepar) set execpar $termtype([set usetermver]_execpar) if {[info exists termicon] && $termicon} { set icontag $termtype([set usetermver]_iconpar) } # set waittag "" set woption "" if {[info exists connwait] && $connwait } { set waittag "$libdir/secpanel.wait" set woption "\'" } set connstring "$configs(sshbin) $user_tag \ $noagentforward_tag $x11forward_tag $noexec_tag $stricthost_tag $sshvertag \ $ipvertag $port_tag $algo_tag \ $ident_tag $cfgfile_tag $nopriv_tag $verbose_tag $quiet_tag \ $fork_tag $gateway_tag $compress_tag $compressval_tag \ $lf_tag $rf_tag $host $command_tag" set runstring "exec $configs(xtermbin) $icontag $titlepar \"SSH Connection - $title\" \ $execpar $quotepar $waittag $woption $woption $quotepar" provrunfile term bg $connstring $runstring historyman write 1 "$title" command_trace save "$connstring" } } proc showconfirm {text parent} { global questres if {$parent == ""} { set p .top17 } else { set p $parent } set old [focus] Window show .top18 set xcoord [expr [winfo rootx $p] + ([winfo width $p] / 2) - ([winfo width .top18] / 2)] set ycoord [expr [winfo rooty $p] + ([winfo height $p] / 2) - ([winfo height .top18] / 2)] wm geometry .top18 +$xcoord+$ycoord .top18.mes19 config -text "$text" tkwait visibility .top18 focus .top18 grab .top18 tkwait variable questres grab release .top18 focus $old Window destroy .top18 if {$questres} { return 1 } else { return 0 } } proc getuser {} { global widget userres set userres [$widget(askeduser) get] } proc askforuser {"mode c"} { global userres widget set old [focus] Window show .top21 if {$mode == "md"} { wm title .top21 "secpanel - Make dir" .top21.fra22.mes23 config -text "Enter name of new directory:" .top21.but26 config -text "Make dir" } if {$mode == "protectdata"} { wm title .top21 "secpanel - Give password for secpanel data protection" .top21.fra22.mes23 config -text "Enter name of new directory:" .top21.but26 config -text "Make dir" } tkwait visibility .top21 focus $widget(askeduser) grab .top21 tkwait variable userres grab release .top21 focus $old Window destroy .top21 return $userres } proc quote_space {in} { regsub -all " " $in "\\ " out return $out } proc quote_double_space {in} { regsub -all " +" $in " " out return $out } proc showmessage {text parent} { if {$parent == ""} { set p .top17 } else { set p $parent } Window show .top22 .top22.mes23 config -text $text set xcoord [expr [winfo rootx $p] + ([winfo width $p] / 2) - ([winfo width .top22] / 2)] set ycoord [expr [winfo rooty $p] + ([winfo height $p] / 2) - ([winfo height .top22] / 2)] wm geometry .top22 +$xcoord+$ycoord focus .top22 grab .top22 tkwait window .top22 } proc check_sources {mode} { global configs switch -exact $mode { ssh { } sp { exec $configs(browserbin) "http://secpanel.net/?sp_check" & } } } proc delconn {} { global widget env if {[selection own] == $widget(specsites)} { set actentry [$widget(specsites) get active] set delprof [retprof $actentry] if {[showconfirm "Delete $actentry?" ""] == 1} { file delete "$env(HOME)/.secpanel/profiles/$delprof.profile" specsiteupdate clear_prmenu selection clear } else { return } } else { showmessage "No entry selected" "" } } proc delete_profile {} { global env widget set act [$widget(profileent) get] if {$act == ""} { showmessage "To delete a profile first load it" "" return } if {[showconfirm "Delete $act?" ""] == 1} { file delete "$env(HOME)/.secpanel/profiles/$act.profile" clear_prmenu clear_profiles specsiteupdate } } proc hostkey {mode} { global env widget configs hostkeytype set khfile "$env(HOME)/.ssh/known_hosts" catch {exec $configs(keygenbin) -h} ver if [regexp -nocase "F hostname Find hostname" $ver] { set hostkeytype "hashed" } else { set hostkeytype "clear" } switch -exact $mode { edit { Window show .top50 $widget(knownhosts) delete 0 end if { ! [file exists $khfile]} { showmessage "No $khfile found" "" return } if {$hostkeytype=="hashed"} { # handle new hashed hostkey format set profiles [glob -nocomplain "$env(HOME)/.secpanel/profiles/*.profile"] foreach prof [lsort $profiles] { source $prof catch {exec $configs(keygenbin) -F $host} ver if [regexp -nocase "found" $ver] { $widget(knownhosts) insert end $host } } return # end of handling hashed hostkeys } else { set hosts [open $khfile r] while {[gets $hosts line] >= 0} { lappend hl [lindex [split $line] 0] } if {[file size $khfile] > 0} { foreach h [lsort $hl] { $widget(knownhosts) insert end $h } } close $hosts return } } view { keygen info host } export { if {[selection own] != $widget(knownhosts)} { showmessage "No hostkey selected!" ".top50" return } set actk [$widget(knownhosts) get active] set hkf [tk_getSaveFile -initialdir "$env(HOME)"] if {$hkf == ""} { return } else { set hkfout [open "$hkf" w] set hosts [open $khfile r] while {[gets $hosts line] >= 0} { set kparts [split $line] if {[lindex $kparts 0] == $actk} { puts $hkfout $line break } } close $hosts close $hkfout return } } delete { if {[selection own] != $widget(knownhosts)} { showmessage "No hostkey selected!" ".top50" return } set actk [$widget(knownhosts) get active] if {[showconfirm "Delete $actk?" ".top50"] == 1} { if {$hostkeytype=="hashed"} { # handle deletion of hashed hostkeys if [catch {exec $configs(keygenbin) -R $actk} err] { showmessage $err "" } # end handling deletion of hashed hostkeys } else { if [file exists $khfile] { set hosts [open $khfile r] # read lines while {[gets $hosts line] >= 0} { lappend klines $line } close $hosts # write lines set hosts [open $khfile w] foreach line $klines { set kparts [split $line] if {[lindex $kparts 0] != $actk} { puts $hosts $line } } close $hosts } } hostkey edit selection clear } else { return } } } } proc insprot {nr mode} { global widget $widget([set mode]fout) delete 0 end $widget([set mode]fout) insert 0 $nr } proc keygen {mode "in_keytype {}"} { global env widget configs pwtextmode libdir nopass passintext kf keytype termtype set usetermver $configs(termver) set icontag "" set configs(xtermbin) $termtype([set usetermver]_path) set titlepar $termtype([set usetermver]_titlepar) set quotepar $termtype([set usetermver]_quotepar) set execpar $termtype([set usetermver]_execpar) if {[info exists termicon] && $termicon} { set icontag $termtype([set usetermver]_iconpar) } # switch -exact $mode { gen { # comment if {[.top52.fra18.ent24 get] == ""} { set commtag " " } else { set commtag "-C '[.top52.fra18.ent24 get]' " } # file array set ktfiles {"SSH1 RSA1" "identity" "SSH2 RSA" "id_rsa" "SSH2 DSA" "id_dsa"} set ktfile $ktfiles($keytype) set identfile "[$widget(identpath) get]" if {$identfile == ""} { set identfile "$env(HOME)/.ssh/$ktfile" } set filetag "-f $identfile " if [file exists $identfile] { if [showconfirm "$identfile exists. Overwrite?" .top52] { file delete $identfile } else { return } } # pass if {$nopass} { set passtag "-N \"\"" } elseif {$passintext} { set passtag " " } elseif {[.top52.fra18.ent29 get] == ""} { showmessage "Please enter the password for the new key!" .top52 return } else { if {[.top52.fra18.ent29 get] == [.top52.fra18.ent25 get]} { set passtag "-N [.top52.fra18.ent29 get] " } else { showmessage "Password and repeated password are not the same!" .top52 return } } # type array set ktshorts {"SSH1 RSA1" "rsa1" "SSH2 RSA" "rsa" "SSH2 DSA" "dsa"} set typetag "-t $ktshorts($keytype) " set connstring "$configs(keygenbin) $filetag $passtag $typetag $commtag" if {$passintext} { set kgstringt "$configs(keygenbin) $filetag $typetag $commtag" } else { set kgstringt "$configs(keygenbin) $filetag -N ***** $typetag $commtag" } set runstring "exec $configs(xtermbin) $titlepar \"secpanel ssh-keygen\" \ $execpar $quotepar $libdir/secpanel.wait $quotepar" command_trace save "$kgstringt" historyman write 4 "$identfile" provrunfile term nobg $connstring $runstring update_keylist keygen clear } "clear" { foreach ke {.top52.fra18.ent24 .top52.fra18.ent29 .top52.fra18.ent29 .top52.fra18.ent25} { [set ke] delete 0 end } $widget(identpath) delete 0 end set keytype "SSH2 DSA" set nopass 0 set passintext 0 set pwtextmode 0 } 0 { set keytype "SSH2 DSA" Window show .top52 .top52.fra18.but27 configure -image [image create photo -file $libdir/images/folder.gif] update_keylist } 1 { if {[selection own] != $widget(keylist)} { showmessage "No key selected!" .top52 return } set kf "$env(HOME)/.ssh/[$widget(keylist) get active]" if [set pwtextmode] { set connstring "$configs(keygenbin) -p -f $kf" set runstring "exec $configs(xtermbin) $titlepar \"secpanel - \ change password for $kf\" \ $execpar $quotepar $libdir/secpanel.wait $quotepar" provrunfile term bg $connstring $runstring } else { Window show .top20 $widget(proplabel) config -text $kf } } chpwd { set oldp [.top20.fra21.ent26 get] set newp1 [.top20.fra21.ent30 get] set newp2 [.top20.fra21.ent31 get] if {$newp1 != $newp2} { showmessage "New password and repeated new password don't match" "" return } set chpwdstr "$configs(keygenbin) -p -f $kf -P ***** -N *****" if [catch {exec $configs(keygenbin) -p -f $kf -P $oldp -N $newp1} err] { showmessage $err "" return } Window destroy .top20 command_trace save "$chpwdstr" } info { if {$in_keytype != "host"} { if {[$widget(keylist) index end] == 0} { return } if {[selection own] != $widget(keylist)} { showmessage "No key selected!" .top52 return } set actk [$widget(keylist) get active] set actkfile "$env(HOME)/.ssh/$actk" if {! [file exists "$actkfile"]} { showmessage "Keyfile not found" .top52 return } } else { set khfile "$env(HOME)/.ssh/known_hosts" if {[$widget(knownhosts) index end] == 0} { return } set actk [$widget(knownhosts) get active] if [file exists $khfile] { if {[file size $khfile] > 0} { set hosts [open $khfile r] while {[gets $hosts line] >= 0} { set kparts [split $line] if {[lindex $kparts 0] == $actk} { set fname "$env(HOME)/.secpanel/.runfiles/hkview.[clock clicks]" set af [open "$fname" w] puts $af $line close $af set actkfile "$fname" } } close $hosts } else { showmessage "Keyfile empty" .top50 return } } else { showmessage "Keyfile not found" .top50 return } } set fptext ".top19.tex17" set bbtext ".top19.tex18" if [file exists "$actkfile"] { Window show .top19 if {$in_keytype != "host"} { set kt "user key" } else { set kt "host key" } .top19.fra22.lab23 config -text "Keyfile: $actkfile" .top19.fra22.lab24 config -text "Keytype: $kt" $fptext config -state normal $bbtext config -state normal $fptext delete 1.0 end $bbtext delete 1.0 end $fptext insert end "[exec $configs(keygenbin) -l -f $actkfile]" $bbtext insert end "[exec $configs(keygenbin) -B -f $actkfile]" $fptext config -state disabled $bbtext config -state disabled return } else { showmessage "Couldn't find the public key for this identity!" .top52 return } } del { if {[selection own] != $widget(keylist)} { showmessage "No key selected!" .top52 return } if [showconfirm "Really delete [$widget(keylist) get active]?" .top52] { file delete -force "$env(HOME)/.ssh/[$widget(keylist) get active]" file delete -force "$env(HOME)/.ssh/[$widget(keylist) get active].pub" update_keylist } } chpath { choosefile "" "" "" keygen } dist { Window show .top53 specsiteupdate distwizard key f } } } proc update_keylist {} { global widget env if [winfo exists .top52] { $widget(keylist) delete 0 end } if [winfo exists .top53] { $widget(distkeylist) delete 0 end } set keyfiles [glob -nocomplain "$env(HOME)/.ssh/*.pub"] foreach kf [lsort $keyfiles] { if [winfo exists .top52] { $widget(keylist) insert end [file rootname [file tail $kf]] } if [winfo exists .top53] { $widget(distkeylist) insert end [file rootname [file tail $kf]] } } } proc load_profile {mode} { global env widget noagentforward x11forward stricthost nopriv \ verbose quiet fork gateway compress algo \ compressval lfs rfs connwait termicon sshverconnect \ ipverconnect askuserspec noexec foreach var {noagentforward x11forward stricthost nopriv \ verbose quiet fork gateway compress algo \ compressval lfs rfs connwait termicon askuserspec noexec} { if [info exists [set var]] { unset $var } } foreach rvar {sshverconnect ipverconnect} { if [info exists [set rvar]] { unset $rvar } } if {! [info exists sshverconnect]} { set sshverconnect "2" } if {! [info exists ipverconnect]} { set ipverconnect "4" } if {$mode == "ssh"} { set profile [$widget(profiles) get active] } elseif {$mode == "specsites"} { set profile [retprof [$widget(specsites) get active]] } source $env(HOME)/.secpanel/profiles/$profile.profile foreach f {title host user port command subsys identity cfgfile profile} { $widget([set f]ent) delete 0 end if [info exists $f] { $widget([set f]ent) insert 0 [set $f] } } if {! [array exists lfs] && $lfs != ""} { set lfsnew [set lfs] unset lfs foreach listelem $lfsnew { array set lfs \ "[lindex [split $listelem :] 0]::[lindex [split $listelem :] 1] \ {Local forward vom old Version of secpanel}" } } if {[winfo exists .top43]} { open_forwardings l } if {[winfo exists .top51]} { open_forwardings r } } proc manage_agent {mode "m run"} { global env widget configs launcher defident agent wins switch -exact $mode { "launch" { if {[info exists env(SSH_AGENT_PID)] && [info exists env(SSH_AUTH_SOCK)]} { if {[showconfirm "There seems to be another SSH-Agent. Start anyway?" ""] == 0} { return } } # Start ssh-agent and read envs if {! [file exists "$configs(agentbin)"] && [catch {exec which "$configs(agentbin)"}]} { showmessage "Can't find SSH-Agent ($configs(agentbin))\nCheck configration!" ".top17" changetab terminal return error } set agentout [open "| $configs(agentbin) -c" r] while {[gets $agentout line] >= 0} { if [string match "setenv SSH*" $line] { set env([lindex [split $line] 1]) \ [string trimright [lindex [split $line] 2] \;] } } close $agentout $widget(statusagent) config -text "Agent active" -bg green -fg black $widget(idents) delete 0 end wm title .top17 "secpanel - Agent active" set agent 1 command_trace save "$configs(agentbin) -c" historyman write 6 "Launching agent" } "kill" { if {$m == "end" && ! $launcher && $agent == "ext"} { return } elseif {$m == "end" && $launcher && $agent != "ext"} { catch {exec $configs(agentbin) -k} killerr unset env(SSH_AGENT_PID) unset env(SSH_AUTH_SOCK) historyman write 6 "Stopping agent" } elseif {$m == "end" && $launcher && $agent == "ext"} { return } else { if [info exists env(SSH_AGENT_PID)] { if {$agent == "ext"} { showmessage "Will not kill external agent!" .top17 return } if {[showconfirm "Kill SSH-agent?" ""] == 1} { exec $configs(agentbin) -k unset env(SSH_AGENT_PID) unset env(SSH_AUTH_SOCK) $widget(statusagent) config -text "No Agent" -bg red wm title .top17 "secpanel - No Agent" $widget(idents) delete 0 end set agent 0 command_trace save "$configs(agentbin) -k" historyman write 6 "Stopping agent" if [winfo exists .top33] { destroyfilter .top33 } } else { return } } else { showmessage "No agent running" .top17 } } } "info" { if {[info exists env(SSH_AGENT_PID)] && [info exists env(SSH_AUTH_SOCK)]} { Window show .top33 if {[info exists configs(wingeom)] && $configs(wingeom)} { if [info exists wins(agentinfo)] { wm geometry ".top33" $wins(agentinfo) } } .top33.fra34.lab38 config -text $env(SSH_AUTH_SOCK) .top33.fra34.lab39 config -text $env(SSH_AGENT_PID) catch {exec $configs(addbin) -l} err command_trace save "$configs(addbin) -l" set text .top33.cpd36.03 $text delete 1.0 end $text insert end "Fingerprints of keys contained by the running agent:\n\n" $text insert end $err } else { showmessage "No agent running or\nagent environment not clean" .top17 } } "chdef" { set defident [tk_getOpenFile -initialdir "$env(HOME)/.ssh/"] if {$defident != ""} { save_globals chdef historyman write 6 "Setting default identity to $defident" } } "rmdef" { set defident "" save_globals chdef historyman write 6 "Removing default identity" } "addident" { if {! [info exists env(SSH_AGENT_PID)]} { showmessage "No agent running" .top17 return } if {($m == "start")} { if { $launcher && [info exists defident] && $defident != ""} { showstatus "Adding default identity" update idletasks set fname $defident } else { set fname "" } } else { showstatus "Adding identity" update idletasks set fname [tk_getOpenFile -initialdir "$env(HOME)/.ssh/"] } if {$fname != ""} { # openssh if {$configs(sshver) == "OpenSSH"} { set env(SSH_ASKPASS) $configs(askpassbin) } catch {exec $configs(addbin) $fname < /dev/null} err command_trace save "$configs(addbin) $fname < /dev/null" if [string match "*No such file*" $err] { showmessage "Can't find your askpass program-\nCheck configuration!" .top17 return } if [string match "Bad key file*" $err] { showmessage "Bad key file" .top17 return } set found 0 foreach ent [$widget(idents) get 0 end] { if {$ent == $fname} { set found 1 break } } if {! $found} { $widget(idents) insert end $fname } if [winfo exists .top33] { manage_agent "info" } showstatus "" historyman write 6 "Adding identity $fname" } else { showstatus "" return } } "remident" { if {! [info exists env(SSH_AGENT_PID)]} { showmessage "No agent running" .top17 return } if {[selection own] != $widget(idents)} { showmessage "No Identity selected" "" return } else { catch {exec $configs(addbin) -d [$widget(idents) get active]} $widget(idents) delete active selection clear command_trace save "$configs(addbin) -d [$widget(idents) get active]" historyman write 6 "Removing identity [$widget(idents) get active]" if [winfo exists .top33] { manage_agent "info" } } } } } proc newconn {state} { changetab ssh clear_profiles } proc propconn {mode} { global widget if {[selection own] != $widget([set mode])} { showmessage "Please select connection" .top17 return } if {[$widget([set mode]) index end] > 0} { changetab ssh load_profile $mode } else { showmessage "No conncections available, please use \"New\"" "" return } } proc retprof {tit} { global env foreach f [glob -nocomplain "$env(HOME)/.secpanel/profiles/*.profile"] { source $f if {$title == $tit} { return "[file rootname [file tail $f]]" } unset lfs } } proc save_profile {} { global env widget noagentforward x11forward stricthost nopriv verbose \ quiet fork gateway compress algo compressval lfs rfs \ connwait termicon sshverconnect ipverconnect askuserspec noexec set prname [$widget(profileent) get] if {$prname == ""} { showmessage "Enter a name for the profile" "" return } set title [$widget(titleent) get] set host [$widget(hostent) get] set user [$widget(userent) get] if {[info exists askuserspec] && $askuserspec} { set user "" } set port [$widget(portent) get] set command [$widget(commandent) get] set subsys [$widget(subsysent) get] if {$title == "" || $host == ""} { showmessage "You must enter at least host and title" "" return } if {$subsys != "" && ($command != "" || $noexec)} { showmessage "The subsys-entry will be used later (has higher priority)" .top17 } set identity [$widget(identityent) get] set cfgfile [$widget(cfgfileent) get] set prfile [open "$env(HOME)/.secpanel/profiles/$prname.profile" w] puts $prfile "#\n# secpanel-Profile\n# Do not edit, use secpanel instead\n#" foreach ent {title host user port command subsys identity cfgfile} { puts $prfile "set [set ent] \"[set $ent]\"" } foreach bool {noagentforward x11forward stricthost nopriv verbose \ quiet fork gateway compress connwait termicon askuserspec noexec} { if [info exists [set bool]] { if [set $bool] { puts $prfile "set [set bool] \"[set $bool]\"" } else { puts $prfile "set [set bool] \"[set $bool]\"" } } } foreach sel {algo compressval} { puts $prfile "set [set sel] \"[set $sel]\"" } puts $prfile "set sshverconnect \"[set sshverconnect]\"" puts $prfile "set ipverconnect \"[set ipverconnect]\"" if [info exists lfs] { puts $prfile "array set lfs {[array get lfs]}" } else { puts $prfile "array set lfs {}" } if [info exists rfs] { puts $prfile "array set rfs {[array get rfs]}" } else { puts $prfile "array set rfs {}" } close $prfile specsiteupdate clear_prmenu clear_profiles } proc seldistkey {} { global env widget set ftypes { {{Public keys} {.pub}} {{All files} *} } $widget(distkeyentry) delete 0 end $widget(distkeyentry) insert 0 \ [tk_getOpenFile -initialdir "$env(HOME)/.ssh" -filetypes $ftypes] } proc specsiteupdate {{mode ""}} { global widget env $widget(specsites) delete 0 end if [winfo exists $widget(distconnlist)] { $widget(distconnlist) delete 0 end } set profiles [glob -nocomplain "$env(HOME)/.secpanel/profiles/*.profile"] if {$mode == "ss"} { if {! [winfo exists $widget(sspecsites).sspecmenu]} { menu $widget(sspecsites).sspecmenu -tearoff 0 -border 1 $widget(sspecsites) config -menu $widget(sspecsites).sspecmenu } else { $widget(sspecsites).sspecmenu delete 0 end } } foreach prof [lsort $profiles] { source $prof $widget(specsites) insert end $title if [winfo exists $widget(distconnlist)] { $widget(distconnlist) insert end $title } if {$mode == "ss"} { $widget(sspecsites).sspecmenu add command -label "$title" -command "connect ss" } unset lfs } } proc about {} { global libdir spversion Window show .top25 .top25.fra26.lab21 config -text "secpanel $spversion" } proc showstatus {text} { global widget $widget(status) config -text $text update idletasks } proc do_firstinit {lv} { global libdir spversion env source $libdir/convert_history.tcl source $libdir/convert_profile.tcl } proc do_exit {} { global env wins libdir configs foreach f [glob -nocomplain "$env(HOME)/.secpanel/.runfiles/*"] { file delete -force $f } if {[info exists env(SSH_AGENT_PID)] && [info exists env(SSH_AUTH_SOCK)]} { manage_agent kill "end" } foreach {winn winnr} {base .top17 trace .top24 sat .top27 agentinfo .top33 hist .top26} { if [winfo exists $winnr] { set wins($winn) [wm geometry $winnr] } } save_globals "geom" # spdata if [set configs(protectdata)] { exec $libdir/dppw.tcl "en" } destroyfilter .top17 exit } proc destroyfilter {win} { global wins foreach {winn winnr} {base .top17 trace .top24 sat .top27 agentinfo .top33 hist .top26} { if {$win == $winnr} { set wins($winn) [wm geometry $win] } } Window destroy $win } proc main {argc argv} { global widget env configs libdir spversion launcher agent termtype wm protocol .top17 WM_DELETE_WINDOW do_exit # bind .top17 { # do_exit # } foreach f {ssh keygen agent add askpass scp browser} { $widget([set f]ent) insert 0 "$configs([set f]bin)" } foreach b {connects profiles keys configs sscreen} { $widget([set b]but) config -border 2 -relief groove -image \ [image create photo -file $libdir/images/[set b]_gr.gif] } foreach {sftptag sftpprog} { "KDE-Konqueror" konqueror "GNOME-Nautilus" nautilus "Filezilla" filezilla } { if {! [catch {exec which "$sftpprog"}]} { .top17.fra44.fra19.fra30.men34.m add radiobutton \ -value "$sftptag" -variable "configs(sftpbin)" -label "$sftptag" } else { .top17.fra44.fra19.fra30.men34.m add radiobutton \ -value "$sftpprog" -variable "configs(sftpbin)" -label "$sftptag (not found)" \ -state "disabled" } } source "$libdir/termdefs.txt" foreach k [array names termtype] { if [string match "*_path" $k] { set termname [string replace $k [string first "_" $k] end] set termpath $termtype($k) if {! [catch {exec which "$termpath"}]} { .top17.fra44.fra19.fra32.men35.01 add radiobutton \ -value "$termname" -variable "configs(termver)" -label "$termname" } else { .top17.fra44.fra19.fra32.men35.01 add radiobutton \ -value "$termname" -variable "configs(termver)" -label "$termname (not found)" \ -state "disabled" } } } set lv 0 if [file exists "$env(HOME)/.secpanel/.init"] { set vf [open "$env(HOME)/.secpanel/.init" r] set lv [read $vf] if {[string equal $spversion $lv] != 1} { do_firstinit $lv exec echo -n $spversion > $env(HOME)/.secpanel/.init } close $vf } else { exec echo -n $spversion > $env(HOME)/.secpanel/.init } menu .mc1 -tearoff 0 -borderwidth 1 if {! [catch {exec which "cssh"}]} { .mc1 add command -label "ClusterSSH" -command "multiconnect cssh" } else { .mc1 add command -label "ClusterSSH (not found)" -command "multiconnect cssh" -state "disabled" } if {! [catch {exec which "multixterm"}]} { .mc1 add command -label "Multi Xterm" -command "multiconnect multixterm" } else { .mc1 add command -label "Multi Xterm (not found)" -command "multiconnect multixterm" -state "disabled" } if {[catch {exec which "filezilla"}] && [catch {exec which "nautilus"}] && [catch {exec which "konqueror"}] } { .top17.fra46.fra26.fra29.fra36.but34 configure -state "disabled" } bind .top17.fra46.fra26.fra29.fra36.but38