#!/bin/sh
# $Log: litesrc.in,v $
# Revision 2.11  2018-06-14 14:28:05+05:30  Cprogrammer
# fixed logdir path
#
# Revision 2.10  2016-06-08 10:42:45+05:30  Cprogrammer
# removed tk_library variable
#
# Revision 2.9  2016-06-07 22:29:30+05:30  Cprogrammer
# added shebang
#
# Revision 2.8  2016-06-07 18:39:08+05:30  Cprogrammer
# FHS compliance
#
# Revision 2.7  2009-10-03 23:55:03+05:30  Cprogrammer
# changed etcdir to scripdir
#
# Revision 2.6  2004-06-19 00:21:12+05:30  Cprogrammer
# rc file changed to .indiumrc
#
# Revision 2.5  2003-11-03 00:49:29+05:30  Cprogrammer
# *** empty log message ***
#
# Revision 2.4  2003-10-28 19:43:21+05:30  Cprogrammer
# *** empty log message ***
#
# Revision 2.3  2003-10-23 13:18:53+05:30  Cprogrammer
# *** empty log message ***
#
# Revision 2.2  2003-09-13 10:26:25+05:30  Cprogrammer
# logo change
#
# Revision 2.1  2003-09-08 17:28:09+05:30  Cprogrammer
# indilite package
#
# the next line restarts using wish \
exec wish "$0" "$@"

proc main {} {
	global argc argv BWidget_present prgtext
	source /usr/share/indimail/indium/scripts/global.tcl
	global bgColor menubarcolor text
	global authenticated inactiveFlag refreshUser

	# build widget .mbar1
	frame .mbar1 -relief flat -bd 2
	pack .mbar1 -side top -fill x
	#.mbar1 configure -background $menubarcolor
	.mbar1 configure -background black
	if {[file exist /usr/share/indimail/indium/images/mbar1.gif]} {
		label .mbar1.logo
		.mbar1.logo config -image [image create photo -file /usr/share/indimail/indium/images/mbar1.gif] -bg black
		pack .mbar1.logo -side right -anchor e
	}
	frame .mbar2  -relief groove -bd 2
	pack .mbar2 -side top -fill x -anchor w
	.mbar2 configure -background black
	#
	# Administration Menu
	#
	menubutton .mbar1.admin -text Administration  -menu .mbar1.admin.menu -highlightthickness 2 -highlightbackground black -bd 4 -background orange -underline 0
	menu .mbar1.admin.menu -tearoff 0
	.mbar1.admin.menu add cascade -label "IndiLITE Admin" -menu .mbar1.admin.slite   -underline 0
		menu .mbar1.admin.slite -tearoff 0
		.mbar1.admin.slite add command -label "Configuration"  -command "slems_config" -underline 0
		.mbar1.admin.slite add command -label "Scheduler"      -command "xcron 0" -underline 0
		.mbar1.admin.slite add command -label "SMTP Routes"    -command "smtproutes 2"  -underline 5
		.mbar1.admin.slite add separator
		.mbar1.admin.slite add command -label "Network Config" -command "network_config" -underline 0
	.mbar1.admin.menu add command -label {Change User}         -command {Login 2}   -underline 7
	.mbar1.admin.menu add command -label {Exit}                 -command {exit}   -underline 0

	#
	# Misc Menu
	#
	menubutton .mbar1.misc -text "Misc" -menu .mbar1.misc.menu -highlightthickness 2 -highlightbackground black -bd 4 \
		-background orange -underline 0
	menu .mbar1.misc.menu -tearoff 0
		.mbar1.misc.menu add command -label "File Manager"         -command "madFilemgr" -underline 0
		if {[file exists /usr/bin/top]} {
		.mbar1.misc.menu add command -label "Top System Processes" -command "catch {exec $configs(xterm) -e /usr/bin/top &} result" -underline 0
		}
		.mbar1.misc.menu add command -label "Flash Interface"      -command "catch {exec $configs(xterm) -e /usr/bin/flash &} result" -underline 5
		if {[file exists /usr/bin/gq]} {
		.mbar1.misc.menu add command -label "Ldap Client"          -command "catch {exec /usr/bin/gq &} result" -underline 1
		}
		.mbar1.misc.menu add separator
		.mbar1.misc.menu add command -label "Preferences"          -command "preferences 2" -underline 0

	#
	# Help Menu
	#
	menubutton .mbar1.help -text "Help" -menu .mbar1.help.menu -highlightthickness 2 -highlightbackground black -bd 4 \
		-background brown1 -underline 0
	menu .mbar1.help.menu -tearoff 0
	.mbar1.help.menu add command -label "IndiMail"       -command "exec evince /usr/share/indimail/doc/indimail.pdf &" -underline 0
	.mbar1.help.menu add command -label "About"          -command "doHelp About" -underline 0
	.mbar1.help.menu add separator
	.mbar1.help.menu add cascade -label "SLEMS Lite"     -menu .mbar1.help.menu.slite -underline 0
		menu .mbar1.help.menu.slite -tearoff 0
		foreach line {fetchmail fethmailconf} {
			.mbar1.help.menu.slite add command -label $line -command "Browse command \"man $line | ul -t unknown\""
		}
	#.mbar1.help.menu add command -label "IndiMail"       -command "showManEntry" -underline 0

	pack .mbar1.admin .mbar1.misc .mbar1.help -side left -fill y
	bind . <F1> {doHelp About}
	if {[winfo exists .intro]} {
		bind . <F2> {wm deiconify .intro}
	}
	button .mbar2.b1 -text "Configuration" -command "slems_config"   -relief groove -bd 2 \
		-highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/slemslite.gif]} {
		.mbar2.b1 config -image [image create photo -file /usr/share/indimail/indium/images/slemslite.gif]
	}
	button .mbar2.b2 -text "Scheduler" -command "xcron 0"   -relief groove -bd 2 \
		-highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/cron.gif]} {
		.mbar2.b2 config -image [image create photo -file /usr/share/indimail/indium/images/cron.gif]
	}
	button .mbar2.b3 -text "SMTP Routes" -command "smtproutes 2"     -relief groove -bd 2 \
		-highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/smtp.gif]} {
		.mbar2.b3 config -image [image create photo -file /usr/share/indimail/indium/images/smtp.gif]
	}
	button .mbar2.b4 -text "Network Config" -command "network_config"     -relief groove -bd 2 \
		-highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/neat.gif]} {
		.mbar2.b4 config -image [image create photo -file /usr/share/indimail/indium/images/neat.gif]
	}
	button .mbar2.b5 -text "File  Manager" -command "madFilemgr"  -relief groove -bd 2 \
		-highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/filemanager.gif]} {
		.mbar2.b5 config -image [image create photo -file /usr/share/indimail/indium/images/filemanager.gif]
	}
	button .mbar2.bh -text "Help"          -command "exec evince /usr/share/indimail/doc/indimail.pdf &" \
		-relief groove -bd 2 -highlightthickness 1 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/help.gif]} {
		.mbar2.bh config -image [image create photo -file /usr/share/indimail/indium/images/help.gif]
	} else {
		.mbar2.bh config -image [image create photo -data "R0lGODlhFgAWAIYAAAQCBAQ2NPwCBHSurIS2tBx2dBweHPz+/Ozm1GxiTGyqpPz6/Pz69GSqpOzaxPzy5HxuVLSmlOTazPz27PT29NzClPTexHxuXLSmjAxqbFSinPTy9KyehNy+lPTy5Pz29HxyXNzWxKSahOzexPzy7IR2ZOTWtESenPTy7KSWfIyCbKyijAQGBDyalPTu3KSSdDSOjJyOdCSGhPzu3OzizJSGdPTq1PTq3JySdMy6lAyKhOzWtOzi1OTOrJyKbMS2nJySfMS+rAwCBNzOrNTCpNzKpJSGZKyafLSifLyylIx+ZHx6ZDSChAQuLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAIALAAAAAAWABYAAAf/gAABAoSFhoeHAAMAiI2IAAQFjI6EAAaJkQeTjwAICYkKBQcLm5WdBwyfhgChB66bp64HCQC1lQ2irqQCAA4PowsLEBESE4wAuLIHFAAVFr+uDBcYxRm1GrmuGxwdFh4Mrh8gGCET1gDYyhsiFSMkDAsMDCUYJhvnJ9kHKCnODwwfPlBQsULCPRYAWogK9sHFiwoOPEyQh0JFPXO1YBSYwBEFghjdHkwQOYGgwQwIZRR44GHGDBogabhAsYEEihrUMAIoUMCEDRs3HODIYQHFA6MPcJA7KICFjgw7eIzo4cOfiwc/gKwIUm2SkKdDdlDt4AABDaU/iIRwwbTSUyJFOow4S3Hkx9oNDDZgXPU0h1wcSIgEGUw4ibVET5WoWMKksePHpdxmyKADAEIWly9HJtQkQJMmlAgZCAQAIf5oQ3JlYXRlZCBieSBCTVBUb0dJRiBQcm8gdmVyc2lvbiAyLjUNCqkgRGV2ZWxDb3IgMTk5NywxOTk4LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KaHR0cDovL3d3dy5kZXZlbGNvci5jb20AOw=="]
	}

	if {$BWidget_present == 1} {
		set text .v.t
		set font "-*-Terminal-Medium-R-Normal--*-120-*-*-*-*-*-*"
		SelectFont .mbar2.font -type toolbar -font $font -bg $menubarcolor -command setFont
		balloonHelp .mbar2.font "Change Font size for text windows"
	}

	button .mbar2.be -text "Exit"          -command "exit"         -relief groove -bd 2 \
		-highlightthickness 2 -highlightbackground black
	if {[file exist /usr/share/indimail/indium/images/quit.gif]} {
		.mbar2.be config -image [image create photo -file /usr/share/indimail/indium/images/quit.gif]
	}
	pack  .mbar2.b1 .mbar2.b2 .mbar2.b3 .mbar2.b4 .mbar2.b5 .mbar2.bh -side left
	if {$BWidget_present == 1} {
		pack .mbar2.font -side left -padx 2 -pady 2 -anchor nw
	}
	pack .mbar2.be -side right

	balloonHelp .mbar2.b1   "IndiLITE Configuration"
	balloonHelp .mbar2.b2   "Scheduler"
	balloonHelp .mbar2.b3   "SMTP Routes"
	balloonHelp .mbar2.b4   "Network configuration"
	balloonHelp .mbar2.b5   "File Manager"
	balloonHelp .mbar2.bh   "Help"
	balloonHelp .mbar2.be   "Bye Bye"

	frame .statusBar
	label .statusBar.lab -text "Indi Lite Administration" -relief sunken -bd 1 \
		-font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
	label .statusBar.labh -text "Press F1 for HELP" -relief sunken -bd 1 \
		-font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -width 20
	label .statusBar.foo -width 28 -relief sunken -bd 1 \
		-font -*-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-* -anchor w
	pack .statusBar.lab  -side left -padx 2 -expand yes -fill both
	pack .statusBar.labh -side left -padx 2 -expand no
	pack .statusBar.foo -side left -padx 2
	pack .statusBar -side bottom -fill x -pady 2 -anchor s
	update
	logBrowser 2
	if {[file exist /var/log/svc/fetchmail/current]} {
		loadFile "/var/log/svc/fetchmail/current"
	} elseif {[file exist /var/log/indimail/fetchmail/current]} {
		loadFile "/var/log/indimail/fetchmail/current"
	} elseif {[file exist /var/log/messages]} {
		loadFile "/var/log/messages"
	} elseif {[file exist /var/adm/messages]} {
		loadFile "/var/adm/messages"
	}
}

##############################################################################
global indiliteversion
global BWidget_present
global prgindic prgtext
global default_domain configs
global configs mailcheck mailclient mailargs option

set tmval [clock click -milliseconds]
set indiliteversion 1.0
set hostname [info hostname]
puts stdout "$tcl_platform(os) $hostname $tcl_platform(osVersion) $tcl_platform(machine)"
if {$::tcl_platform(platform) != "unix"} {
	puts stdout "This code has been written to run only on reliable Operating Systems like unix"
	puts stdout "This code aborts if your OS has anything to do with words like 'Bill' or 'Gates'"
	puts stdout "If you have got this error, it means that you should either"
	puts stdout ""
	puts stdout "1. Let experts at IndiMail manage your mailing requirements"
	puts stdout "2. Change to a better Operating System"
	puts stdout "3. Sell your soul and downgrade your Mail Platform to something which runs on $tcl_platform(platform)"
	puts stdout ""
	puts stdout "The above choices are in the increasing order of complexity"
	puts stdout ""
	puts stdout ""
	puts stdout "Have a good day"
	exit 1
}
catch {package require BWidget} result
if {[string compare [lindex $result 0] "can't"] == 0} {
	set BWidget_present 0
} else {
	set BWidget_present 1
}
cd /
set prgindic 0

set prgtext "Loading Module..common.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/common.tcl

set prgtext "Loading $env(HOME)/.indimail/.indiumrc [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
if {[file exists $env(HOME)/.indimail/.indiumrc]} {
	source $env(HOME)/.indimail/.indiumrc
} else {
	default_config
}
set prgtext "$tcl_platform(os) $hostname $tcl_platform(osVersion) $tcl_platform(machine) [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}

if {$BWidget_present == 1} {
	if {[info exists configs(splash)] == 0} {
		splash 18
	} elseif {[info exists configs(splash)] == 1 && $configs(splash) == 1} {
		splash 18
	}
}

set refreshUser    1
set controldir     $configs(controldir)
set servicedir     $configs(servicedir)
set bgColor        $configs(bgColor)
set textcolor      $configs(textcolor)
set menubarcolor   $configs(menubarcolor)
set clockmode      $configs(clockmode)
if {[info exists configs(taiconvert)]} {
	set taiconvert     $configs(taiconvert)
} else {
	set taiconvert 0
	set configs(taiconvert) 0
}
set want_progressdialog $configs(progressdialog)
if {[info exists configs(mailcheck)]} {
	set mailcheck $configs(mailcheck)
} else {
	set mailcheck 0
}
if {$mailcheck == 1} {
	if {[info exists configs(imaphost)] == 0} {
		set mailcheck 0
	} else {
		set mailcheck 1
		set imaphost       $configs(imaphost)
		set imapport       $configs(imapport)
		set imapuser       $configs(imapuser)
		set imappass       $configs(imappass)
		set imapinterval   $configs(imapinterval)
	}
} else {
	set mailcheck 0
}
if {[info exists configs(mailargs)]} {
	set mailargs $configs(mailargs)
}

set prgtext "Loading Modules.. [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}

set prgtext "Loading Module..global.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/global.tcl

set prgtext "Loading Module..combobox.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/combobox.tcl
set prgtext "Loading Module..progressbar.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/progressbar.tcl
set prgtext "Loading Module..ballon.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/balloon.tcl
set prgtext "Loading Module..notebook.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/notebook.tcl

set prgtext "Loading Module..mclistbox.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/mclistbox.tcl

set prgtext "Loading Module..base64.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/base64.tcl

set prgtext "Loading Module..fileman.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/fileman.tcl

set prgtext "Loading Module..madHelp.tcl [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
source /usr/share/indimail/indium/scripts/madHelp.tcl

set prgtext "Loading Module..libtai64.so [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
catch {package require tai64 1.0} result
if {[string compare [lindex $result 0] "can't"] == 0} {
	load /usr/lib/x86_64-linux-gnu/libtai64.so
}
package require tai64 1.0

package require combobox 2.2
package require mclistbox 1.02

set prgtext "Finished Loading Modules [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}

catch {namespace import combobox::*}
catch {namespace import progressbar::*}
catch {namespace import mclistbox::*}
catch {namespace import base64::*}

if {[info exists bgColor]} {
	tk_setPalette $bgColor
}
set debug_flag 0
wm title . "IndiLITE $indiliteversion $hostname"
wm positionfrom . user
wm sizefrom . program
wm grid . 80 30 6 12

set option(icon_name) "IndiLITE $indiliteversion"
set option(icon) small
wm iconname . $option(icon_name)
SetIcon . $option(icon)
set prgtext "Setting up authentication [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
Login 2
setWidthHeight . 126 30
set prgtext "Initializing Log Browser [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
initBrowser
set prgtext "Loading Main [expr [clock click -milliseconds] - $tmval] ms"
incr prgindic
catch {.intro.x.f.fr.log insert end "$prgtext\n"}
if {[winfo exists .intro]} {
	after 5000 {wm withdraw .intro}
}
main
