#!/usr/bin/wish 
# **************************************************************
# -xftpRob --An ftp scripts generator
# This software are copyright Manuel Arturo Izquierdo P. (1998)
# and distributed under the GPL (see COPYING).
# There is NO WARRANTY for this program. USE AT YOUR OWN RISK.
# Please send comments, suggestions or bug reports to:
# aizquier@ciencias.ciencias.unal.edu.co
# **************************************************************


wm title . "xftpRob --A ftp scripts generator"

# Set some global variables
set logfile 1
set sname ""
set server ""
set user anonymous
set email ""

# Define main frames
frame .f1 -width 50 -bg #ced8f8 
frame .f3
frame .f4
frame .f4a
frame .f5


# Define menu
menubutton .f1.file -text "File" -menu .f1.file.items -bg #ced8f8
  set fmitems [menu .f1.file.items -tearoff 0]
  $fmitems add command -label "Save script" -command CreateScript 
  $fmitems add separator
  $fmitems add command -label "Exit" -command "puts \"C-ya!\"; exit" 
pack .f1.file -side left



# Define server entry
label .f3.label -text "ftp server name:"
entry .f3.sname -width 25 -textvariable server -bg white
pack .f3.label -side left
pack .f3.sname  -side left -fill x -expand true

# Define user & email entries
label .f4.label -text "Username:"
entry .f4.user -width 10 -textvariable user -bg white
pack .f4.label .f4.user  -side left

label .f4.elabel -text "E-mail address:"
entry .f4.email -width 15 -textvariable email -bg white
pack .f4.elabel -side left
pack .f4.email  -side left -fill x -expand true

# Define label about ftp seq. and logfile chekbutton
label .f4a.label -text "ftp sequence:"
pack .f4a.label -side left
checkbutton .f4a.log -text "Generate log file    " -variable logfile -onvalue 1 -offvalue 0
pack .f4a.log -side right

# Define text area for ftp sequence
set font -misc-fixed-bold-r-normal-*-12-0-72-72-c-*-iso8859-1

set t [text .f5.t  -bg white -fg black -selectborderwidth 0  \
-insertwidth 3 -wrap none -font $font\
-yscrollcommand ".f5.sy set" -xscrollcommand ".f5.sx set" -padx 10 -width 60 -height 10]

    scrollbar .f5.sy -orient vert -width 10 -command ".f5.t yview"
    pack .f5.sy -side right -fill y

    scrollbar .f5.sx -orient horizontal -width 10 -command ".f5.t xview"
    pack .f5.sx -side bottom -fill x


    pack .f5.t -side left -fill both -expand true




# Pack the main frames.

pack .f1 -fill x -side top
pack .f3 .f4 .f4a .f5 -fill x -expand true -side top



# Generates the ftp script

proc CreateScript {} {
global logfile sname server user email t
set sname [tk_getSaveFile] ;#Browse for a file
set texto [$t get 1.0 end] ;#Extract ftp seq. text

#If user pushes cancel, return
  if {[string length $sname] == 0} {
   return
  }

#If user does not put data, return
  if {[string length $server] == 0} {
   bgerror "Please insert a ftp server name"
   return
  }

  if {[string length $user] == 0} {
   bgerror "Please insert a username. ex. \"anonymous\""
   return
  }

  if {[string length $email] == 0} {
   bgerror "Please insert your email address"
   return
  }

  if {[string length $texto] == 0} {
   bgerror "Please insert a ftp sequence"
   return
  }

# If invalid permissions, return
# (File is open with execute permission enabled)
  if [catch {open $sname w 0755} scriptId] {
      bgerror "You don't have permission to create $sname"
      return
  }


# Extract filename base
set tailname [file tail $sname]

# Creates a name for logfile
set logname [file rootname $tailname].log

# Write script
puts $scriptId "#!/bin/sh"
puts $scriptId "# **$tailname**. Generated by xftpRob\n"
puts $scriptId "# Makes a backup of the old ~/.netrc file"
puts $scriptId "cp \$HOME/.netrc \$HOME/netrc.bak\n"
puts $scriptId "# Configures a new ~/.netrc"
puts $scriptId "rm \$HOME/.netrc"
puts $scriptId "echo machine $server > \$HOME/.netrc"
puts $scriptId "echo login $user >> \$HOME/.netrc"
puts $scriptId "echo password $email >> \$HOME/.netrc"
puts $scriptId "chmod go-rwx \$HOME/.netrc"

#If logfile is checked, make a logfile 
#Put begin time of connection
if {$logfile} {
    puts $scriptId "echo $tailname log file > $logname"
    puts $scriptId "echo Begin conection at: >> $logname"
    puts $scriptId "date >> $logname"
}

puts $scriptId "ftp -i<<**"
puts $scriptId "open $server"
puts $scriptId $texto
puts $scriptId "bye"
puts $scriptId "**"

# Put end time of connection
if {$logfile} {
    puts $scriptId "echo End conection at: >> $logname"
    puts $scriptId "date >> $logname"
}

puts $scriptId "# End of $tailname script"

close $scriptId
}









