' Configuration for Anope
'
' (C) 2003-2005 Anope Team
' Contact us at info@anope.org
'
' This program is free but copyrighted software; see the file COPYING for
' details.
'
' Based on the original code of Epona by Lara.
' Based on the original code of Services by Andy Church.


' Required Variables
Dim StdIn
Dim UseMySQL, UseDBEnc, CompilerVer
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

' Setup StdIn for use
Set StdIn = WScript.StdIn

' Display introductory header
WScript.Echo ""
WScript.Echo "   ___"
WScript.Echo "  / _ \  http://www.anope.org"
WScript.Echo " | /_\ | _ __  _ _  _ _   ___"
WScript.Echo " |  _  || '_ \/ _ \/ _ \ / _ \"
WScript.Echo " | | | || | |  |_|  |_| |  __/"
WScript.Echo " |_| |_||_| |_\___/|  _/ \___|"
WScript.Echo "                   | |"
WScript.Echo "                   |_| IRC Services"
WScript.Echo "                             v1.7.9"
WScript.Echo ""
WScript.Echo ""
WScript.Echo "This program will help you to compile your Services, and ask you"
WScript.Echo "questions regarding the compile-time settings of it during the"
WScript.Echo "process."
WScript.Echo ""
WScript.Echo "Anope is a set of Services for IRC networks that allows users to"
WScript.Echo "manage their nicks and channels in a secure and efficient way,"
WScript.Echo "and administrators to manage their network with powerful tools."
WScript.Echo ""
WScript.Echo "Do not forget to read all the documents located in docs/,"
WScript.Echo "especially the README and INSTALL files."
WScript.Echo ""
WScript.Echo "For all your Anope needs please visit our portal at"
WScript.Echo "http://www.anope.org/"
WScript.Echo ""
WScript.Echo "Press Enter to Continue..."
StdIn.ReadLine

' Enable MySQL Support?
Do While (UseMySQL <> "Y" AND UseMySQL <> "N" AND UseMySQL <> "YES" AND UseMySQL <> "NO")
        WScript.Echo "Would you like to compile Anope with MySQL Support?"
        WScript.Echo "(NOTE: You must have MySQL 3.23 or Later installed)"
        WScript.Echo ""
        WScript.Echo "Yes / No (Default)"
        UseMySQL = UCase(Trim(StdIn.ReadLine))
        If (UseMySQL = "") Then
                UseMySQL = "N"
        End If
        If (UseMySQL <> "Y" AND UseMySQL <> "N" AND UseMySQL <> "YES" AND UseMySQL <> "NO") Then
                WScript.Echo ""
                WScript.Echo "Invalid Selection!"
                WScript.Echo ""
        End If
Loop

WScript.Echo ""

If (UseMySQL = "Y" OR UseMySQL = "YES") Then
        If (fso.FileExists("C:\mysql\lib\opt\libmysql.lib") = False) Then
                WScript.Echo "ERROR: Cannot find LibMySQL.lib in c:\mysql\lib\opt!"
                WScript.Echo "MySQL Support Disabled.."
                UseMySQL = "0"
        ElseIf (fso.FileExists("C:\mysql\include\mysql.h") = False) Then
                WScript.Echo "ERROR: Cannot find mysql.h in c:\mysql\include!"
                WScript.Echo "MySQL Support Disabled.."
                UseMySQL = "0"
        Else
                WScript.Echo "All required files for MySQL Support have been located!"
                WScript.Echo "MySQL Support Enabled.."
                UseMySQL = "1"
        End If
Else
        WScript.Echo "MySQL Support Disabled.."
        UseMySQL = "0"
End If

WScript.Echo ""

' Enable Database Encryption Support?
Do While (UseDBEnc <> "Y" AND UseDBEnc <> "N" AND UseDBEnc <> "YES" AND UseDBEnc <> "NO")
        WScript.Echo "Would you like to enable Database Encryption?"
        WScript.Echo "(NOTE: If you enable encryption, you will NOT be able to recover"
        WScript.Echo "passwords at a later date. GETPASS and SENDPASS will also be useless)"
        WScript.Echo ""
        WScript.Echo "Yes / No (Default)"
        UseDBEnc = UCase(Trim(StdIn.ReadLine))
        If (UseDBEnc = "") Then
                UseDBEnc = "N"
        End If
        If (UseDBEnc <> "Y" AND UseDBEnc <> "N" AND UseDBEnc <> "YES" AND UseDBEnc <> "NO") Then
                WScript.Echo ""
                WScript.Echo "Invalid Selection!"
                WScript.Echo ""
        End If
Loop

WScript.Echo ""

If (UseDBEnc = "Y" OR UseDBEnc = "YES") Then
        WScript.Echo "Database Encryption Enabled.."
        UseDBEnc = "1"
Else
        WScript.Echo "Database Encryption Disabled.."
        UseDBEnc = "0"
End If

WScript.Echo ""
WScript.Echo "I will now check you have all the things I need..."

Dim libPath, libPath2
If (fso.FolderExists("C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Lib")) Then
        WScript.Echo "I found a copy of Microsoft Visual Studio .NET 2003.."
        libPath = "C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Lib"
        libPath2 = "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Lib"
        If (fso.FileExists(libPath & "/MSVCRT.lib") = False And fso.FileExists(libPath2 & "/MSVCRT.lib") = False) Then
                WScript.Echo "Hm. I can't seem to find the default library.. Are you sure this is installed properly?"
                libPath = ""
                libPath2 = ""
        ElseIf (fso.FileExists(libPath & "/wsock32.lib") = False And fso.FileExists(libPath2 & "/wsock32.lib") = False) Then
                WScript.Echo "I couldn't seem to find wsock32.lib.. We kind of need this.."
                libPath = ""
                libPath2 = ""
        ElseIf (fso.FileExists(libPath & "/advapi32.lib") = False And fso.FileExists(libPath2 & "/advapi32.lib") = False) Then
                WScript.Echo "I couldn't seem to find advapi32.lib.. We kind of need this.."
                libPath = ""
                libPath2 = ""
        ElseIf (fso.FileExists(libPath & "/uuid.lib") = False And fso.FileExists(libPath2 & "/uuid.lib") = False) Then
                WScript.Echo "I couldn't seem to find uuid.lib.. We kind of need this.."
                libPath = ""
                libPath2 = ""
        End If
End If

If (fso.FolderExists("C:\Program Files\Microsoft Visual Studio\VC98\Lib") And LibPath = "") Then
        WScript.Echo "I found a copy of Microsoft Visual Studio 6.. It's old, but we can use it.."
        libPath = "C:\Program Files\Microsoft Visual Studio\VC98\Lib"
        CompilerVer = "VC6"
        If (fso.FileExists(libPath & "/MSVCRT.lib") = False) Then
                WScript.Echo "Hm. I can't seem to find the default library.. Are you sure this is installed properly?"
                libPath = ""
        ElseIf (fso.FileExists(libPath & "/wsock32.lib") = False) Then
                WScript.Echo "I couldn't seem to find wsock32.lib.. We kind of need this.."
                libPath = ""
        ElseIf (fso.FileExists(libPath & "/advapi32.lib") = False) Then
                WScript.Echo "I couldn't seem to find advapi32.lib.. We kind of need this.."
                libPath = ""
        ElseIf (fso.FileExists(libPath & "/uuid.lib") = False) Then
                WScript.Echo "I couldn't seem to find uuid.lib.. We kind of need this.."
                libPath = ""
        End If
End If

If (fso.FileExists("C:\Program Files\Microsoft Visual Studio .NET 2003\VC7\Bin\nmake.exe") = False AND fso.FileExists("C:\Program Files\Microsoft Visual Studio\VC98\Bin\nmake.exe") = False AND fso.FileExists("C:\nmake.exe") = False) Then
                WScript.Echo ""
                WScript.Echo "I couldn't seem to find a copy of nmake.exe on your system.."
                WScript.Echo ""
                WScript.Echo "I can continue without it for now, but you'll need it when you want to compile."
                WScript.Echo "I suggest downloading a copy from the URL below, and placing it in your C:\ drive."
                WScript.Echo ""
                WScript.Echo "http://download.microsoft.com/download/vc15/patch/1.52/w95/en-us/nmake15.exe"
                WScript.Echo ""
End If
        
If (libPath = "") Then
        Dim tmpPath
        WScript.Echo "I couldn't find any of the paths I was looking for.."
        WScript.Echo "If you have installed the Visual C++ Libraries in a non-standard location, enter"
        WScript.Echo "this location below, and I will try and look there.."
        WScript.Echo "(NOTE: Do NOT enter a trailing slash)"
        WScript.Echo ""
        WScript.Echo "Path to Visual C++ Libraries: "
        tmpPath = Trim(StdIn.ReadLine)
        If (fso.FolderExists(tmpPath) AND fso.FileExists(tmpPath & "/MSVCRT.lib")) Then
                libPath = tmpPath
                If (fso.FileExists(libPath & "/wsock32.lib") = False) Then
                        WScript.Echo "I couldn't seem to find wsock32.lib.. We kind of need this.."
                        libPath = ""
                ElseIf (fso.FileExists(libPath & "/advapi32.lib") = False) Then
                        WScript.Echo "I couldn't seem to find advapi32.lib.. We kind of need this.."
                        libPath = ""
                ElseIf (fso.FileExists(libPath & "/uuid.lib") = False) Then
                        WScript.Echo "I couldn't seem to find uuid.lib.. We kind of need this.."
                        libPath = ""
                Else
                        WScript.Echo "Okay, I found what I was looking for.."
                End If
        Else
                WScript.Echo "I couldn't find the default library in that folder."
        End If
End If

If (libPath <> "") Then
                Dim f, f2, i, verMaj, verMin, verPatch, verBuild
                Const ForReading = 1, ForWriting = 2
                WScript.Echo "Looks like you've got all the libraries I need.."
                Set f2 = fso.OpenTextFile("version.log", ForReading)
                Do While (i < 7)
                        f2.SkipLine()
                        i = i + 1
                Loop
                verMaj = Replace(Replace(Trim(f2.ReadLine), "VERSION_MAJOR=" & chr(34), ""), chr(34), "")
                verMin = Replace(Replace(Trim(f2.ReadLine), "VERSION_MINOR=" & chr(34), ""), chr(34), "")
                verPatch = Replace(Replace(Trim(f2.ReadLine), "VERSION_PATCH=" & chr(34), ""), chr(34), "")
                verBuild = Replace(Replace(Trim(f2.ReadLine), "VERSION_BUILD=" & chr(34), ""), chr(34), "")
                verStr = Replace(verStr, chr(34), "")
                f2.close
                Set f = fso.OpenTextFile("Makefile.inc.win32", ForWriting)
                f.WriteLine("USE_MYSQL=" & UseMySQL)
                If (UseMySQL = "1") Then
                        f.WriteLine("MYSQL_LIB=" & chr(34) & "c:\\mysql\\lib\\opt" & chr(34))
                        f.WriteLine("MYSQL_INC="  & chr(34) & "c:\\mysql\\include" & chr(34))
                End If
                f.WriteLine("DB_ENCRYPTION=" & UseDBEnc)
                If (CompilerVer = "VC6") Then
                        f.WriteLine("VC6=/QIfist")
                End If
                if (libPath2 <> "") Then
                        libPath = libPath2 & chr(34) & " /LIBPATH:" & chr(34) & libPath
                End If
                f.WriteLine("VERSION=" & verMaj & "." & verMin & "." & verPatch & "." & verBuild)
                f.WriteLine("LIBPATH=" & libPath)
                f.WriteLine("PROGRAM=anope.exe")
                f.WriteLine("DATDEST=data")
                f.WriteLine("CC=cl")
                f.WriteLine("RC=rc")
                f.WriteLine("MAKE=nmake -f Makefile.win32")
                f.WriteLine("BASE_CFLAGS=/O2 /MD")
                f.WriteLine("LIBS=wsock32.lib advapi32.lib /NODEFAULTLIB:libcmtd.lib")
                f.WriteLine("LFLAGS=/LIBPATH:" & chr(34) & "$(LIBPATH)" & chr(34))
                If (UseMySQL = "1") Then
                        f.WriteLine("LIBS=$(LIBS) /LIBPATH:$(MYSQL_LIB)")
                        f.WriteLine("MYSQL_LIB_PATH=/LIBPATH:$(MYSQL_LIB)")
                        f.WriteLine("BASE_CFLAGS=$(BASE_CFLAGS) /I $(MYSQL_INC)")
                        f.WriteLine("MYSQL_INC_PATH=/I $(MYSQL_INC)")
                        f.WriteLine("RDB_C=rdb.c")
                        f.WriteLine("RDB_O=rdb.obj")
                        f.WriteLine("MYSQL_C=mysql.c")
                        f.WriteLine("MYSQL_O=mysql.obj")
                        f.WriteLine("BASE_CFLAGS=/D USE_MYSQL /D USE_RDB $(BASE_CFLAGS) /D HAVE_MYSQL_MYSQL_H")
                        f.WriteLine("MYPASQL_BUILD=$(CC) /LD $(MYSQL_INC_PATH) src\mypasql.c /link $(MYSQL_LIB_PATH) $(LFLAGS) \")
                        f.WriteLine("/DEF:src\mypasql.def libmysql.lib zlib.lib ws2_32.lib advapi32.lib /NODEFAULTLIB:LIBCMTD.lib")
                        f.WriteLine("LIBS=$(LIBS) libmysql.lib zlib.lib")
                End If
                If (UseDBEnc = "1") Then
                        f.WriteLine("BASE_CFLAGS=/D USE_ENCRYPTION /D ENCRYPT_MD5 $(BASE_CFLAGS)")
                End If
                f.WriteLine("MORE_CFLAGS = /I" & chr(34) & "../include" & chr(34))
                f.WriteLine("CFLAGS = /nologo $(VC6) $(CDEFS) $(BASE_CFLAGS) $(MORE_CFLAGS)")
                f.close()
                WScript.Echo "Configuration Complete!"
                WScript.Echo ""
                WScript.Echo "Type nmake -f Makefile.win32 to Compile Anope"
Else
                WScript.Echo ""
                WScript.Echo "Sorry, but you didn't have all the required libraries installed."
                WScript.Echo ""
                WScript.Echo "See http://windows.anope.org for a list of downloads needed to install Anope"
                WScript.Echo ""
End If

