2013年9月21日土曜日

Z10_Main.vbs

'############################################################
'# Server Protect For Linux Pattern ファイルの配布
'# 
'# 実行方法:コマンドコンソールから実施する
'# D:\task\splx>cscript //nologo Z10_Main.vbs > splxpatcopy.log &
'# 
'# UPDATE 2013/09/06 
'# 
'# RELATE PARAMERWE VALUE & MASHINE ENVIROMENT
'# PARM : BLANK -> XXM1XV01 (プロキシ有)
'# 1 -> XXV1DM12 ,XXV1DM13 (プロキシ無)
'# 
'# 
'############################################################
Option Explicit

' グローバル定義 
Dim sGparm_Proxy    'パラメータ1 1:プロキシ無
Dim iStepNo : iStepNo = 1  'ステップ番号
Dim msg : msg = ""    'メッセージ
Dim sComputer
Dim URL

'************************************************************
' 定数 
'************************************************************
'
' IVMIXVI01のリクエスト対象のURL (インターネットサイト)
'Const XXMIXVI01 = "http://downloadcenter.trendmicro.com/index.php?clk=tab_pattern&clkval=109®s=jp&lang_loc=13"
Const URL_XXMIXVI01 = "http://localhost:8080/examples/dl.html"


' SAV1DM12のリクエスト対象のURL (社内サイト:XXMIXVI01)
'Const URL_XXV1DM12 =  "http://999.18.137.8/officescan/splxdownload/Z10_Main.ini"
Const URL_XXV1DM12 =  "http://localhost:8080/examples/Z10_Main.ini"

' SAV1DM13のリクエスト対象のURL (社内サイト:XXV1DM12)
'Const URL_XXV1DM13 =  "http://999.18.145.50/officescan/splxdownload/Z10_Main.ini"
Const URL_XXV1DM13 =  "http://localhost:8080/examples12/Z10_Main.ini"

' Trend Micro Server Protect Download Center Base Url 
'Const TO_URL_BASE_TMSP = "http://www.trendmicro.com/ftp/products/aupattern/japan_offline/"
Const TO_URL_BASE_TMSP = "http://localhost:8080/examples/"

' IVMIXVI01 Site Base URL
'Const TO_URL_XXMIXVI01 = "http://999.18.137.8/officescan/splxdownload/"
Const TO_URL_XXMIXVI01 = "http://localhost:8080/examples/"

' SAV1DM12 Site Base URL
'Const TO_URL_XXV1DM12 =  "http://999.18.145.50/officescan/splxdownload/"
Const TO_URL_XXV1DM12 = "http://localhost:8080/examples12/"

' SAV1DM13 Site Base URL
'Const TO_URL_XXV1DM13 =  "http://999.18.145.50/officescan/splxdownload/"
Const TO_URL_XXV1DM13 = "http://localhost:8080/examples13/"

' カレントパス
Const CURRENT_PATH = "D:\task\splx"

' ダウンロード設定ファイルのパス
Const DWLDFILE_INI = "D:\task\splx\Z10_Main.ini"

' レスポンスを内容を一時出力のパス
Const RESPONS_TEXT = "D:\task\splx\tmp\GetDLC_Site.txt"

' 処理候補リスト
Const LIST_FILE_TM = "D:\task\splx\tmp\tmcmFList.txt"

' 外部共通部品のファイル
Const INCLD_SCRIPT = "D:\task\splx\scripts\stdlib.vbs"

' ダウンロード先と展開先のディレクトリ 
Const ZIP_BASEPATH = "D:\Program Files (x86)\Trend Micro\OfficeScan\PCCSRV\splxDownload"



' IVMIXVI01 Site Base URL
Const PARM_MODE1 = 1      'プロキシ経由なし

' ドライブのリミット値(空容量 バイト)
Const DRIVE_FREE_LIMIT = 1100000000

' 候補リストパターン
Const PATTERN_ZIP = "tmcm_patternupdate"


'**************************************************************
' 1.0 処理全体 
'**************************************************************

 Dim objShell
 Set objShell = WScript.CreateObject("WScript.Shell")
 'Wscript.Echo objShell.CurrentDirectory
 Set objShell = Nothing 


 'カレントパス取得
 Dim objPath
 Set objPath = CreateObject("Scripting.FileSystemObject").GetFolder(".")
 'Wscript.Echo objPath

 Dim s
 Main_Init()
 Main_Prosess()
 Main_Terminate()
 WScript.Quit (0)

'**************************************************************
' 1.2 メイン処理 
'**************************************************************
Sub Main_Prosess()
 '---------------------------------------------------------
 '-- 1.2 メイン処理(1) リクエスト対象のURL -------------
 '---------------------------------------------------------

 ' 設定ファイルを作成する
 Dim sMain_Prosess
 Dim sGetDLC_Site
 Dim sURI,sFile
 Dim iPos,str
 Dim objFso, objFile

 sMain_Prosess = ""

 SetLogStepStart 1,"SITE HTML GET **********************"

 'Http GetでダウンロードするZIPの情報の保管先から引出す

 IF sComputer = "XX09716" THEN
  sGetDLC_Site = GetDLC_Site(URL,"2")
 ELSE
  sGetDLC_Site = GetDLC_Site(URL,"")
 END IF


 '取りこんだファイルから必要なURL情報を引き出す
 sFile = GetUrlFile(sGetDLC_Site)

 '自環境のMain.Iniへ ダウンロードするURLを書き出す)

 'URIと連結させて、URLをファイルへ書き出す。
 IF sComputer = "XXV1DM12" THEN
  sGetDLC_Site = TO_URL_IVMIXVI01 & sFile
 End IF

 IF sComputer = "XXV1DM13" THEN
  sGetDLC_Site = TO_URL_SAV1DM12 & sFile
 End IF

 WScript.Echo now & MSGLEVEL_I & "URL =" & URL
 WScript.Echo now & MSGLEVEL_I & " ( " & GetURI(sGetDLC_Site) & "  " & GetUrlFile(sGetDLC_Site) & " ) "

 Set objFso = CreateObject("Scripting.FileSystemObject")
 Set objFile = objFso.OpenTextFile(DWLDFILE_INI, 2, True)

 IF Err.Number > 0 THEN
  WScript.Echo now & MSGLEVEL_E & "NG Open Error " & DWLDFILE_INI
  WScript.Quit (10)
 ELSE
  objFile.WriteLine sGetDLC_Site
 END IF

 objFile.Close
 WScript.Echo now & MSGLEVEL_I & "RE_WRITE OK " & DWLDFILE_INI

 Set objFile = Nothing
 Set objFso = Nothing

 SetLogStepEnd 1, "SITE HTML GET ********************** "

 '---------------------------------------------------------
 '-- 1.2 メイン処理(2) パターンファイをダウンロード -
 '---------------------------------------------------------
 SetLogStepStart 2,"Pattern File DownLoad **************"

Dim sURLPattern,savefile
Dim sRet

 ' 定義ファイルを読み込んで、変数ファイル名を編集する

 sURLPattern= trim(ReadTextLine(DWLDFILE_INI))

 savefile = ZIP_BASEPATH & "\" & GetUrlFilename(sURLPattern)

 WScript.Echo now & MSGLEVEL_I & "From : " & sURLPattern & vbCrLf & _
 vbtab & vbtab & vbtab & "TO : " & savefile

 sRet = GetDLC_ZIP( sURLPattern, savefile)

 WScript.Echo now & MSGLEVEL_I & "結果:" & sRet
 
 IF left(trim(sRet),2) = "NG" THEN
  WScript.Echo now & MSGLEVEL_E & "** 実行中止 ********************************************" & vbCrLf
  WScript.Quit (10)
 END IF 

 SetLogStepEnd 2, " Pattern File DownLoad ***********"


 '---------------------------------------------------------
 '-- 1.2 メイン処理(3) 展開する ------------------------
 '---------------------------------------------------------
 SetLogStepStart 3,"Extract File ***********************"

 Dim ExtractFrom   ' 展開元ファイル
 Dim ExtractTo    ' 展開先
 Dim s
 Dim sType

 s = trim(ReadTextLine(DWLDFILE_INI))

 ExtractFrom = ZIP_BASEPATH & "\" & GetUrlFilename(s)
 ExtractTo  = ZIP_BASEPATH

 sType = Unzip_Tmcm(ExtractFrom,ExtractTo)

 WScript.Echo now & MSGLEVEL_I & "From : " & _
 ExtractFrom & vbCrLf & _
 vbtab & vbtab  & vbtab & "TO : " & ExtractTo

 SetLogStepEnd 3, "Extract File ***********************"


 'Main_Prosess = s
 

End Sub

'**************************************************************
' 1.1 初期処理 
'**************************************************************
Sub Main_Init()

 IncludeScript INCLD_SCRIPT

 ' VBS起動するWSHコマンドがcScriptでない場合は
 ' エラーコード99で終了する
 IF Not(IsCscript()) THEN
  WScript.Quit (99)
 END IF

 msg="**Note:CScript Only Run**"
 sComputer = SetLogHeader(msg)

 IF sComputer = "XXMIXVI01" THEN 
  URL = URL_XXMIXVI01
 END IF

 ' SAV1DM12のリクエスト対象のURL 
 IF sComputer = "XXV1DM12" THEN
  URL = URL_XXV1DM12
 END IF

 ' SAV1DM13のリクエスト対象のURL
 IF sComputer = "XXV1DM13" THEN
  URL = URL_XXV1DM13
 END IF

 Call GetParam()

End Sub

'-----------------------------------------------
' 1.1.1 パラメータ取得処理 
'-----------------------------------------------
Sub GetParam()

 Dim i
 Dim objParm

 sGparm_Proxy = ""   ' モード

 Set objParm=WScript.Arguments
 For i=1 To objParm.Count
  WScript.echo now & MSGLEVEL_I & "** (" & i & ") " & objParm.Item(i - 1)

  IF i = 1 THEN
   sGparm_Proxy = objParm.Item(i - 1)
  END IF
 Next

End sub

'**************************************************************
' 1.3 終了処理 
'**************************************************************
Sub Main_Terminate()

 Dim s
 Dim patternchr
 patternchr = PATTERN_ZIP

 '-----------------------------------------------------
 '-- 1.3.1 ファイルをコピーする -----------------------
 '-----------------------------------------------------
 SetLogStepStart 4,"COPY FILE **************************"

 Dim sToFile
 
 sToFile = ZIP_BASEPATH & "\" & "Z10_Main.ini"

 Z10_CopyFile DWLDFILE_INI,sToFile

 WScript.Echo now & MSGLEVEL_I & "OK Copy:FROM " & DWLDFILE_INI &  vbcrlf & vbtab & "TO:" & sToFile

 'ダウンロードしたパターンファイルを現在のバージョンを除くものを削除する
 'tmpにデイレクトリ一覧を作成して(今ダウンロードしたものは除く)

 s= trim(ReadTextLine(DWLDFILE_INI))

 Call TmcmProcLst(GetUrlFilename(s),patternchr)

 ' 候補リストに従い、削除する
 Call TmcmProcDel()

 SetLogStepEnd 4, "COPY FILE **************************"

 WScript.Echo now & MSGLEVEL_I & "** NORMAL_END *****************************************" & vbCrLf

 WScript.Quit (0)

End Sub

'************************************************************
' 関数: IncludeScript 
' 用途:外部スクリプトをロードする 
' 入力: テキストファイルパス 
'************************************************************
Sub IncludeScript( strFileName )

 Dim efso,efile
 Set efso = CreateObject("Scripting.FileSystemObject")
 Set efile = efso.OpenTextFile( strFileName )
 ExecuteGlobal efile.ReadAll
 efile.Close

End Sub