home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 July
/
Chip_2001-07_cd1.bin
/
tema
/
linux6
/
pgpgui.tcl
< prev
next >
Wrap
Text File
|
2001-06-04
|
18KB
|
558 lines
#!/usr/bin/wish -f
# Front-end for pgp
# Created using a program of Michal Burda, 1999,as template, by Jiri KOuba 2000
# as graphical interface for pgpk
#************************************************************************
# procedures:
#************************************************************************
proc newkey { } {
set w .form1
catch {destroy $w}
toplevel $w
wm title $w "Nov² klφΦ"
wm iconname $w ""
label $w.msg -wraplength 4i -justify left -text "PGP"
pack $w.msg -side top
wm title $w "Nov² klφΦ - vstupnφ ·daje"
wm iconname $w "Nov² klφΦ"
label $w.msg1 -wraplength 4i -justify left -text "Vypl≥te nßsledujφcφ ·daje"
pack $w.msg1 -side top
frame $w.buttons1
pack $w.buttons1 -side bottom -fill x -pady 2m
button $w.buttons1.dismiss -text Zru╣it -command "destroy $w"
button $w.buttons1.run -text Dßle -command "runpgp"
pack $w.buttons1.run $w.buttons1.dismiss -side left -expand 1
frame $w.radioframeleft -borderwidth .5c
frame $w.radioframeright -borderwidth .5c
pack $w.radioframeleft $w.radioframeright -side top -expand yes -fill y
foreach i {DSS RSA} {
radiobutton $w.radioframeleft.b$i -text "Metoda $i" -variable mf1 \
-relief flat -value $i
pack $w.radioframeleft.b$i -side top -pady 2 -anchor w
}
foreach velikost {768 1024 2048 3072} {
set lower [string tolower $velikost]
radiobutton $w.radioframeright.$lower -text $velikost -variable mf2 \
-relief flat -value $lower
pack $w.radioframeright.$lower -side top -pady 2 -anchor w
}
foreach i { f3 f4 } {
frame $w.$i -bd 2
entry $w.$i.entry -relief sunken -width 40 -textvariable m$i
label $w.$i.label
pack $w.$i.entry -side right
pack $w.$i.label -side left
}
frame $w.f5 -bd 2
entry $w.f5.entry -relief sunken -width 40 -textvariable mf5 -show *
label $w.f5.label
pack $w.f5.entry -side right
pack $w.f5.label -side left
$w.f3.label config -text "Identifikßtor (Jan Novak <jan.novak@volny.cz>:"
$w.f4.label config -text "Validita klφΦe (dny):"
$w.f5.label config -text "Heslo:"
pack $w.msg $w.f3 $w.f4 $w.f5 -side top -fill x
bind $w <Return> "destroy $w"
}
#------------------------------------------------------------------------
proc runpgp { } {
global mf1 mf2 mf3 mf4 mf5 v
if { $mf1 == "RSA" & $mf2 == "3072" } {
toplevel $v
wm title $v "Upozorn∞nφ"
frame $v.top -relief raised -border 1
pack $v.top -side top -fill both
frame $v.bot -relief raised -border 1
pack $v.bot -side bottom -fill both
message $v.top.msg -width 6i -anchor center \
-text "Metoda RSA nepodporuje\
\n
\ndΘlku 3072. "
pack $v.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
button $v.okbutton -text "OK" -command {destroy $v}
pack $v.okbutton -side bottom
grab $v
focus $v
} else {
exec xterm -fn 10x20 -e pgpk -g $mf1 $mf2 $mf3 $mf4 $mf5
}
}
#------------------------------------------------------------------------
proc loadkeylist { } {
global keylist thekey b
set keylist [exec pgpk -l]
catch {destroy $b}
toplevel $b
wm title $b "KlφΦe"
wm iconname $b "KlφΦe - seznam"
label $b.msg -wraplength 4i -justify left -text "Cti nßsledujφcφ ·daje"
pack $b.msg -side top
frame $b.buttons
pack $b.buttons -side bottom -fill x -pady 2m
button $b.buttons.dismiss -text Dßle -command "destroy $b"
pack $b.buttons.dismiss -side left -expand 1
scrollbar $b.yscrollbar -command "$b.listbox yview" -relief raised -orient vertical
scrollbar $b.xscrollbar -command "$b.listbox xview" -relief raised -orient horizontal
text $b.text -relief sunken -bd 2 -yscrollcommand "$b.scroll set" -setgrid 1 \
-height 30
scrollbar $b.scroll -command "$b.text yview"
pack $b.scroll -side right -fill y
pack $b.xscrollbar -side bottom -fill x
pack $b.yscrollbar -side right -fill y
pack $b.text -expand yes -fill both
$b.text insert 0.0 $keylist
}
#------------------------------------------------------------------------
proc loadkeylistbrief { } {
global keylist thekey
set keylist [exec pgpk -l | grep uid | cut -c4- ]
set w .form
catch {destroy $w}
toplevel $w
wm title $w "KlφΦe struΦn∞"
wm iconname $w "KlφΦe - seznam"
label $w.msg -wraplength 4i -justify left -text "╚ti nßsledujφcφ ·daje"
pack $w.msg -side top
frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text Dßle -command "destroy $w"
pack $w.buttons.dismiss -side left -expand 1
scrollbar $w.yscrollbar -command "$w.listbox yview" -relief raised -orient vertical
scrollbar $w.xscrollbar -command "$w.listbox xview" -relief raised -orient horizontal
text $w.text -relief sunken -bd 2 -yscrollcommand "$w.scroll set" -setgrid 1 \
-height 30
scrollbar $w.scroll -command "$w.text yview"
pack $w.scroll -side right -fill y
pack $w.xscrollbar -side bottom -fill x
pack $w.yscrollbar -side right -fill y
pack $w.text -expand yes -fill both
$w.text insert 0.0 $keylist
}
#------------------------------------------------------------------------
proc loadkeylistbox { } {
global keylist thekey
set w .form
set uncurl ""
catch {destroy $w}
toplevel $w
wm title $w "KlφΦe"
wm iconname $w "KlφΦe - seznam"
label $w.msg -wraplength 4i -justify left -text "Cti nßsledujφcφ ·daje"
pack $w.msg -side top
}
#------------------------------------------------------------------------
proc key { r } {
global thekey list uncurl klist b v
if { $r == "a" } {
exec xterm -fn 10x20 -e pgpk -$r $uncurl
} else {
# set thekey [ $b.list get [ $b.list curselection ]]
if { [ $b.list curselection ] == "" } {
toplevel $v
wm title $v "Upozorn∞nφ"
frame $v.top -relief raised -border 1
pack $v.top -side top -fill both
frame $v.bot -relief raised -border 1
pack $v.bot -side bottom -fill both
message $v.top.msg -width 6i -anchor center \
-text "Musφte mφt vybran² klφΦ \
\n
\ns kter²m chcete pracovat. "
pack $v.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
button $v.okbutton -text "OK" -command {destroy $v}
pack $v.okbutton -side bottom
grab $v
focus $v
} else {
set thekey [ $b.list get [ $b.list curselection ]]
if { $r == "rv" } {
#exec echo -$r $thekey $uncurl -o $uncurl.pgp >/tmp/rv.txt
exec xterm -fn 10x20 -e pgpe -r $thekey $uncurl -o $uncurl.pgp
} else {
if { $r == "rvu" } {
#exec echo pgpv $uncurl >/tmp/rvu.txt
exec xterm -fn 10x20 -e pgpv $uncurl
} else {
if { $r == "x" & $uncurl != "" } {
exec xterm -fn 10x20 -e pgpk -$r $thekey -o $uncurl
} else {
if { $r == "l" | $r == "c" } {
frame $b.lc
pack $b.lc -side bottom -fill x -pady 2m
button $b.lc.dismiss -text Zav°φt -command "destroy $b.lc"
pack $b.lc.dismiss -side left -expand 1
text $b.lc.text -relief sunken -bd 2 -yscrollcommand "$b.lc.scroll set" -setgrid 1 \
-height 10
scrollbar $b.lc.scroll -command "$b.lc.text yview"
pack $b.lc.scroll -side right -fill y
pack $b.lc.text -expand yes -fill both
$b.lc.text insert 0.0 [ exec pgpk -$r $thekey ]
#
} else {
if { $r == "d" | $r == "-revoke"} {
exec echo pgpk -$r $thekey >/tmp/reboke.txt
exec xterm -fn 10x20 -e pgpk -$r $thekey
} else {
if { $r == "s" } {
frame $b.su
set thekey_ \"$thekey\"
#jak to obalit do uvozovek
pack $b.su -side bottom -fill x -pady 2m
button $b.su.dismiss -text Zav°φt -command "destroy $b.su"
button $b.su.sign -text "Podepsat k²m" -command "keylist1 $r $thekey_"
pack $b.su.dismiss $b.su.sign -side left -expand 1
scrollbar $b.su.yscrollbar -command "$b.su.list yview" -relief raised -orient vertical
scrollbar $b.su.xscrollbar -command "$b.su.list xview" -relief raised -orient horizontal
pack $b.su.xscrollbar -side bottom -fill x
pack $b.su.yscrollbar -side right -fill y
listbox $b.su.list -font fixed -relief raised -selectmode browse \
-yscroll "$b.su.yscrollbar set" -xscroll "$b.su.xscrollbar set" -width 80
pack $b.su.list -fill both -expand 1
evalu
eval $b.su.list insert 0 $klist
#
#
} else {
exec xterm -fn 10x20 -e pgpk -$r $thekey
}}}}}}}}
}
#------------------------------------------------------------------------
proc fileDialog { ent operation} {
global fileName
#tim se vyresil prenos teto promenne vne
# Type names Extension(s) Mac File Type(s)
#
#---------------------------------------------------------
set types {
{"Text files" {.txt .doc} }
{"Text files" {} TEXT}
{"All files" *}
}
if {$operation == "open"} {
set fileName [tk_getOpenFile -filetypes $types ]
#v╣imni si, ╛e tk funkce se volß v []
} else {
set fileName [tk_getSaveFile -filetypes $types \
-initialfile Untitled -defaultextension .txt]
}
if [string compare $fileName ""] {
#jde to v╛dycky touto cestou prßzdnΘho °et∞zce
$ent delete 0 end
#vymaz entry
$ent insert 0 $fileName
#vloz do nej promennou jmena souboru
$ent xview end
}
}
#------------------------------------------------------------------------
proc about {} {
global appname
toplevel .awin -class Dialog
wm title .awin "About $appname"
frame .awin.top -relief raised -border 1
pack .awin.top -side top -fill both
frame .awin.bot -relief raised -border 1
pack .awin.bot -side bottom -fill both
message .awin.top.msg -width 5i -anchor center \
-text "$appname\
\n
\n
PGPgui is an window interface for pgpk key management.\
This file is freeware and it was last modified in August, 30th 2000.\
No warranty granted.\
\nContact me: jiri.kouba@volny.cz\
\nMy homepage: www.volny.cz/jiri.kouba\
\n
\nCopyright (C) 2000 Jiri Kouba. All Rights Reserved."
pack .awin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
button .awin.okbutton -text "OK" -command {destroy .awin}
pack .awin.okbutton -side bottom
grab .awin
focus .awin
}
#------------------------------------------------------------------------
proc howuninstall {} {
global appname
toplevel .uwin -class Dialog
wm title .uwin "Jak odinstalovat $appname"
frame .uwin.top -relief raised -border 1
pack .uwin.top -side top -fill both
frame .uwin.bot -relief raised -border 1
pack .uwin.bot -side bottom -fill both
message .uwin.top.msg -width 6i -anchor center \
-text "Jak odinstalovat $appname?\
\n
\nJednodu╣e sma╛te tento pgpgui file. "
pack .uwin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
button .uwin.okbutton -text "OK" -command {destroy .uwin}
pack .uwin.okbutton -side bottom
grab .uwin
focus .uwin
}
#------------------------------------------------------------------------
proc howto {} {
global appname
toplevel .uwin -class Dialog
wm title .uwin "Howto "
frame .uwin.top -relief raised -border 1
pack .uwin.top -side top -fill both
frame .uwin.bot -relief raised -border 1
pack .uwin.bot -side bottom -fill both
message .uwin.top.msg -width 6i -anchor center \
-text "Jak za╣ifrovat soubor ?\
\n
\nVyberte klφΦ p°φjemce (m∙╛ete to b²t i Vy sßm)
\n TlaΦφtkem Soubor vyber vyber soubor, kter² chce╣ ╣ifrovat
\n a stiskni Za╣ifruj soubor.
\nPodobn∞ p°i exportu klφΦe do souboru.
\n
\nJak zφskat n∞Φφ klφΦ ?
\nKlφΦ_Otev°φt Φesk² server klφΦ∙
\nOstatnφ v∞ci jsou samovysv∞tlujφcφ"
pack .uwin.top.msg -side top -expand 1 -fill both -padx 5m -pady 5m
button .uwin.okbutton -text "OK" -command {destroy .uwin}
pack .uwin.okbutton -side bottom
grab .uwin
focus .uwin
}
#------------------------------------------------------------------------
proc evalu {} {
global klist
set klist [ exec pgpk -l | grep uid | sed -n 1,\$s/^uid//p | cut -c2- | \
sed -n 1,\$s/^./\"/p | sed -n 1,\$s/\<.*$/\"/p | tr '\012' '\040' ]
}
#------------------------------------------------------------------------
proc render { } {
global klist b
destroy $b.list $b.yscrollbar $b.xscrollbar
scrollbar $b.yscrollbar -command "$b.list yview" -relief raised -orient vertical
scrollbar $b.xscrollbar -command "$b.list xview" -relief raised -orient horizontal
pack $b.xscrollbar -side bottom -fill x
pack $b.yscrollbar -side right -fill y
listbox $b.list -font fixed -relief raised -selectmode browse \
-yscroll "$b.yscrollbar set" -xscroll "$b.xscrollbar set" -width 80
pack $b.list -fill both -expand 1
evalu
eval $b.list insert 0 $klist
}
#------------------------------------------------------------------------
proc keylist1 { r thekey_ } {
global b
set thekey1 [ $b.su.list get [ $b.su.list curselection ]]
exec xterm -fn 10x20 -e pgpk -$r $thekey_ -u $thekey1
#exec echo -$r $thekey_ $thekey1 >/tmp/1.txt
}
#------------------------------------------------------------------------
proc connect2web { } {
exec xterm -fn 10x20 -e kppp &
}
#------------------------------------------------------------------------
proc chookey { } {
global b u
toplevel .butwin
frame $b.buttons
pack $b.buttons -side bottom -fill x -pady 2m
button $b.buttons.ref -text "Refresh" -command "render"
button $b.buttons.sho -text "ProhlΘdni klφΦ" -command "key l "
button $b.buttons.del -text "Sma╛ klφΦ" -command "key r"
button $b.buttons.chec -text "Ov∞° podpis klφΦe" -command "key c"
button $b.buttons.edi -text "Edituj klφΦ" -command "key e"
button $b.buttons.sig -text "Podepi╣ klφΦ" -command "key s"
button $b.buttons.blo -text "Blokuj klφΦ" -command "key d"
button $b.buttons.rev -text "Revokuj (odvolej)klφΦ" -command "key -revoke"
foreach i { ref sho del chec edi sig blo rev } {
pack $b.buttons.$i -side left -expand 1
}
frame $b.buttons1
pack $b.buttons1 -side bottom -pady 2m
button $b.buttons1.sen -text "Exportuj klφΦ(i na server)" -command "key x "
button $b.buttons1.rec -text "Importuj klφΦ ze souboru" -command "key a "
button $b.buttons1.fil -text "Za╣ifruj soubor" -command "key rv "
button $b.buttons1.ufil -text "Roz╣ifruj soubor" -command "key rvu "
foreach i { sen rec fil ufil } {
pack $b.buttons1.$i -side left -expand 1
}
frame $b.$u
entry $b.$u.entry -relief sunken -width 40 -textvariable uncurl
$b.$u.entry insert 0 "hkp://wwwkeys.cz.pgp.net"
label $b.$u.label
pack $b.$u.entry -side right
pack $b.$u.label -side left
$b.$u.label config -text "Zadej jmΘno vstupnφho/vystupniho souboru nebo URL: "
button $b.$u.but -text "Soubor vyber..." -command "fileDialog $b.$u.entry open"
pack $b.$u -side bottom -fill x
pack $b.$u.but -side left -fill x
render
}
#------------------------------------------------------------------------
proc openczkeyserver {} {
exec netscape -no-about-splash www.pgp.cz
}
#------------------------------------------------------------------------
proc quitme {} {
destroy .
}
#************************************************************************
set appname "PGPgui Tcl 1.0"
set metoda ""
set delka ""
set id ""
set validita ""
set passphrase ""
set w .form
set b .butwin
set u url
set uncurl ""
set v .alertwin
set f ""
catch {destroy $w}
toplevel $w
wm title $w "KlφΦe"
wm iconname $w "KlφΦe - seznam"
#positionWindow $w
label $w.msg -wraplength 4i -justify left -text "PGP"
pack $w.msg -side top
global f
set home [ exec printenv | grep HOME | cut -d= -f2 ]
#exec echo $home >/tmp/home.txt
set cfg [ exec find $home/.pgp/ -name pgp.cfg -print ]
#exec echo $cfg >/tmp/cfg.txt
if { $cfg == "" } {
exec touch $home/.pgp/pgp.cfg
}
########
wm title . $appname
frame .mbar -relief raised -bd 2
menubutton .mbar.file -text "Soubor" -underline 0 \
-menu .mbar.file.menu
menubutton .mbar.keylist -text "KlφΦ" -underline 0 \
-menu .mbar.keylist.menu
menubutton .mbar.options -text "Nastavenφ" -underline 0 \
-menu .mbar.options.menu
menubutton .mbar.help -text "Help" -underline 0 -menu .mbar.help.menu
menu .mbar.file.menu
.mbar.file.menu add command -label "Quit" -underline 0 \
-command {quitme}
# -accelerator "Alt+F4"
menu .mbar.keylist.menu
.mbar.keylist.menu add command -label "Nov² klφΦ.." -underline 0 \
-command {newkey}
.mbar.keylist.menu add command -label "Otev°φt seznam..." -underline 0 \
-command {loadkeylist}
.mbar.keylist.menu add command -label "Otev°φt seznam struΦn²..." -underline 0 \
-command {loadkeylistbrief}
.mbar.keylist.menu add command -label "Otev°φt Φesk² server klφΦ∙..." -underline 0 \
-command {openczkeyserver}
.mbar.keylist.menu add command -label "P°ipojit k Internetu" -underline 0 \
-command {connect2web}
menu .mbar.options.menu
.mbar.options.menu add command -label "Volby.." -underline 0 \
-command {setoption}
menu .mbar.help.menu
.mbar.help.menu add command -label "O aplikaci..." -underline 0 \
-command {about}
.mbar.help.menu add command -label "Jak odinstalovat..." -underline 0 \
-command {howuninstall}
.mbar.help.menu add command -label "HOWTO..." -underline 0 \
-command {howto}
pack .mbar -side top -fill x
pack .mbar.file .mbar.keylist .mbar.options -side left -in .mbar
pack .mbar.help -side right -in .mbar
frame .buttons
pack .buttons -side bottom -fill x -pady 2m
button .buttons.nek -text "Nov² klφΦ" -command "newkey"
button .buttons.chek -text "Vybran² klφΦ" -command "chookey"
pack .buttons.nek -side left -expand 1
pack .buttons.chek -side left -expand 1
#poznatky: ╣patnou cestu to pφ╣e, kdy╛ prvek nemß sv∙j rßm, nebo u╛ existuje, co╛
#vznikß v∞t╣inou tak, ╛e Φlov∞k zapomene v cest∞ na n∞jakou prom∞nnou a tφm s eprvek polo╛φ
#na ji╛ existujφcφ
#toplevel ud∞lß novΘ ko°enovΘ okno
#kdy╛ v procedu°e globßlnφ prom∞nnß, tak se do porcedury nep°edßvß parametrem
#Metoda RSA nema 3072