costin      01/01/31 20:38:14

  Added:       src/build/nightly README build_once.sh build_tomcat.sh
                        cvs_get.sh functions_build.sh nightly.sh
                        run_watchdog.sh start_tomcat.sh stop_tomcat.sh
                        weekly.sh
  Log:
  Added the shell scripts I use for the nightly build. All is an ugly
  hack, but it works ( it started with a simple shell to just build
  tomcat ).
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat/src/build/nightly/README
  
  Index: README
  ===================================================================
  - I tested the scripts on linux and solaris - only standard bourne shell
   is used
  
  - this is based on my early attempt based on ant - I'll try again later,
  now .sh does the job and it's enough
  
  To run the tests: 
  
  1. make sure .antrc and .antproperties are clean
  2. You need the following directory structure ( or edit the .sh files to
  match your - the scripts are not very configurable, it's just a tool to
  build ):
  
  $HOME: ( the home directory of the user who have the crontab job ):
  
  $HOME/bin/nightly/* -> the scripts
  $HOME/java/jsse -> jsse jars ( jcert.jar jnet.jar jsse.jar)
  $HOME/java/xml -> jaxp jars ( jaxp.jar parser.jar )
  $HOME/java/java1.1 -> link to a working 1.1 jdk installation
  $HOME/java/java1.2 -> link to a working 1.2+ jdk
  $HOME/opt/ant-1.2 -> link to ant 1.2
  $HOME/opt/ant-1.1 -> link to ant 1.1 ( needed by watchdog )
  $HOME/opt/ws/log -> empty dir
  $HOME/opt/ws/zip -> empty dir
  $HOME/opt/ws/build -> empty dir
  
  You must do "cvs login" first, so the passowrd is stored in .cvspass.
  
  - If behind a firewall, you can use "runsocks nightly.sh" ( or 
  "socksify nightly.sh" ).
  
  You must run "weekly.sh" to get the initial CVS repository and build 
  servletapi and watchdog for the first time.
  
  Then nightly.sh will only update ( cvs update ) to minimize time.
  
  What's inside ?
  ===============
  
  weekly.sh -> get jakarta-tomcat, watchdog, tools, build everything for the 
               first time ( it's a fresh checkout - old dirs are removed )
  
  nightly.sh -> main driver, call various build and test functions and
              scripts with  various JDKs and CLASSPATHS
  
  start_tomcat.sh -> a tricky one - start tomcat and wait till it's ready 
               ( by grep-ping the log file for HttpInterceptor starting )
  
  stop_tomcat.sh -> ATTENTION: it'll first try to be nice, but then it'll
               kill all java processes ( pkill, killall ) - use a separate
               account for building ( and not root ) (XXX do a grep first )
  
  run_watchdog.sh -> start, run watchdog 3 times, run sanity, grep the
               results for error counts 
  
  cvs_get.sh -> update or clean checkoug, for tomcat or all
  
  build_tomcat.sh -> just build and zip the result ( after adding jaxp )
  
  functions_build.sh -> various shell functions ( I use to source it and 
               use them in command line to repeat individual steps )
  
  
  NOTE: don't expect nice code, it's just a hack to build and test tomcat.
  It may be useful - if it's not, ignore this directory.
  
  
  Costin 
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/build_once.sh
  
  Index: build_once.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  # override ANT_HOME
  ANT_HOME=$HOME/opt/ant-1.1
  export ANT_HOME
  
  ######## MAIN 
  
  echo Building watchdog
  echo ---------------------------------------------------
  
  ant_build jakarta-servletapi servletapi servletapi-build.log
  ant_build jakarta-watchdog watchdog watchdog-build.log
  tail -6 $LOGDIR/watchdog-build.log
  
  echo
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/build_tomcat.sh
  
  Index: build_tomcat.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  if [ "$1" != "" ] ; then
    SUFIX=$1
  fi
  ######## MAIN 
  
  ant_build jakarta-tomcat tomcat tomcat-3.3-build-$SUFIX.log "main watchdog-web-based 
dist"
  
  fix_tomcat
  
  zip_dist tomcat tomcat-3.3-$SUFIX 
  
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/cvs_get.sh
  
  Index: cvs_get.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  GET=""
  
  if [ "$1" = "-f" ]; then
      GET="-f"
      shift
      cvs_get jakarta-tomcat
  else
      cvs_update jakarta-tomcat
  fi
  
  zip_src jakarta-tomcat tomcat-3.3-src.zip
  
  if [ "$1" = "all" ]; then
    if [ "$GET" = "-f" ]; then
      cvs_get jakarta-watchdog
      cvs_get jakarta-tools
      cvs_get jakarta-servletapi
    else
      cvs_update jakarta-watchdog
      cvs_update jakarta-tools
      cvs_update jakarta-servletapi
    fi
    zip_src jakarta-watchdog watchdog-src.zip
    zip_src jakarta-servletapi servletapi-src.zip
  fi
  
  zip_src jakarta-tomcat tomcat-3.3-src.zip
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/functions_build.sh
  
  Index: functions_build.sh
  ===================================================================
  #!/bin/sh
  
  # Config: ZIPDIR CVSROOT ANT_HOME JAVA_HOME
  # PATH 
  # JDK11_HOME JDK12_HOME
  
  if [ -f $HOME/.nightlyrc ] ; then 
     . $HOME/.nightlyrc
  fi
  
  # Defaults 
  if [ "$WS" = "" ] ; then
     WS=$HOME/ws
  fi
  
  if [ "$JAVA_HOME" = "" ] ; then
     JAVA_HOME=$HOME/java/java1.2
  fi
  
  ZIP=zip
  ZIPDIR=$WS/zip
  LOGDIR=$WS/log
  CVSROOT=:pserver:[EMAIL PROTECTED]:/home/cvspublic
  PATH=$HOME/bin:$HOME/bin/nightly:/usr/local/bin:$PATH
  JSSE=$HOME/java/jsse
  EXTENTSIONS=$JSSE/jsse.jar:$JSSE/jnet.jar:$JSSE/jcert.jar:.
  ANT_HOME=$HOME/opt/ant-1.2
  
  export JAVA_HOME
  export ZIP
  export ZIPDIR
  export LOGDIR
  export CVSROOT
  export PATH
  export JSSE
  export EXTENSIONS
  export ANT_HOME
  
  ## Make sure all dirs exists
  mkdir -p $ZIPDIR
  mkdir -p $LOGDIR
  
  help_nightly() {
      # nothing yet
      echo 
  }
  
  
  check() {
      # Java version
      # JSSE
      # Ant 1, 2
      echo
  }
  
  
  # functions
  
  cvs_get() {
     MOD=$1
  
    cd $WS
    rm -rf $MOD
    echo cvs -d $CVSROOT co $MOD
    cvs co $MOD >$LOGDIR/cvs-get-$MOD.log 2>&1
    wc $LOGDIR/cvs-get-$MOD.log
    tail -5 $LOGDIR/cvs-get-$MOD.log
    echo 
  }
  
  cvs_update() {
    MOD=$1
  
    cd $WS/$MOD
    echo cvs -d -P $CVSROOT update 
    cvs update >$LOGDIR/cvs-update-$MOD.log 2>&1
    wc $LOGDIR/cvs-update-$MOD.log
    tail -5 $LOGDIR/cvs-update-$MOD.log
    echo 
  }
  
  ant_build() {
    MOD=$1
    DIST=$2
    LOG=$LOGDIR/$3
    TARGET=$4
    # ANT_HOME
    # JAVA_HOME
  
    if [ "$TARGET" = "" ] ;     
        then  TARGET=dist ; fi
  
    echo ---------- $DIST BUILD `date` ---------- 
    echo JAVA_HOME=$JAVA_HOME
    echo LOG=$LOG
    echo WS=$WS/$MOD
    echo CLASSPATH=$CLASSPATH 
    echo 
  
    echo ---------- $DIST BUILD `date` ---------- >> $LOG 2>&1 
    echo JAVA_HOME=$JAVA_HOME >> $LOG 2>&1
    echo LOG=$LOG >> $LOG 2>&1
    echo WS=$WS/$MOD >> $LOG 2>&1
    echo CLASSPATH=$CLASSPATH >> $LOG 2>&1
    echo  >> $LOG 2>&1
    $JAVA_HOME/bin/java -version  >> $LOG 2>&1
  
    cd $WS/$MOD
    echo rm -rf $WS/build/$DIST >> $LOG 2>&1
    echo rm -rf $WS/dist/$DIST  >> $LOG 2>&1
    rm -rf $WS/build/$DIST >> $LOG 2>&1
    rm -rf $WS/dist/$DIST  >> $LOG 2>&1
  
    JAVACMD=$JAVA_HOME/bin/java
    export JAVACMD
    echo Building with $ANT_HOME/bin/ant $TARGET 2>&1 >> $LOG
    $ANT_HOME/bin/ant $TARGET 2>&1 >> $LOG
  
    grep "BUILD SUCCESSFUL" $LOG 
    if [ "$?" != "0" ]; then 
      echo BUILD FAILED. 
      echo ---------- HEAD:
      head -10 $LOG
      echo ---------- TAIL:
      tail -20 $LOG
      echo ----------
      echo 
    fi
    echo ---------- DONE $DIST BUILD `date` ---------- 
  }
  
  ant_build_xml() {
    MOD=$1
    DIST=$2
    LOG=$LOGDIR/$3
    # ANT_HOME
    # JAVA_HOME
  
    echo ---------- $DIST BUILD `date` ---------- 
    echo JAVA_HOME=$JAVA_HOME
    echo LOG=$LOG
    echo WS=$WS/$MOD
    echo CLASSPATH=$CLASSPATH 
    echo 
  
    echo ---------- $DIST BUILD `date` ---------- >> $LOG 2>&1 
    echo JAVA_HOME=$JAVA_HOME >> $LOG 2>&1
    echo LOG=$LOG >> $LOG 2>&1
    echo WS=$WS/$MOD >> $LOG 2>&1
    echo CLASSPATH=$CLASSPATH >> $LOG 2>&1
    echo  >> $LOG 2>&1
    $JAVA_HOME/bin/java -version  >> $LOG 2>&1
  
    cd $WS/$MOD
    echo rm -rf $WS/$MOD/build >> $LOG 2>&1
    rm -rf $WS/$MOD/build >> $LOG 2>&1
  
    JAVACMD=$JAVA_HOME/bin/java
    export JAVACMD
    $ANT_HOME/bin/ant dist 2>&1 >> $LOG
  
    grep "BUILD SUCCESSFUL" $LOG 
    if [ "$?" != "0" ]; then 
      echo BUILD FAILED. 
      echo ---------- HEAD:
      head -10 $LOG
      echo ---------- TAIL:
      tail -20 $LOG
      echo ----------
      echo 
    fi
    echo ---------- DONE $DIST BUILD `date` ---------- 
  }
  
  zip_src() {
    MOD=$1
    ZIPNAME=$2
  
    cd $WS
    echo 
    echo zip -r  $ZIPNAME $MOD
    zip -r $MOD >/dev/null
    mv zip.zip $ZIPDIR/$ZIPNAME
    echo 
  }
  
  zip_dist() {
    DIST=$1
    ARCH=$2
  
    echo 
    echo Creating $DIST distribution in $ZIPDIR:
    echo $ARCH.tar.gz $ARCH.zip
    cd $WS/dist
  
    rm -f $ZIPDIR/$ARCH.tar >/dev/null 2>&1
    rm -f $ZIPDIR/$ARCH.tar.gz >/dev/null 2>&1
    tar cvf $ZIPDIR/$ARCH.tar $DIST >/dev/null 2>&1
    gzip $ZIPDIR/$ARCH.tar
    rm $ZIPDIR/$ARCH.zip >/dev/null 2>&1
    zip  -r $DIST >/dev/null
    mv zip.zip  $ZIPDIR/$ARCH.zip
    echo 
  }     
  
  fix_tomcat() {
  
    cp $ANT_HOME/lib/parser.jar $WS/dist/tomcat/lib
    cp $ANT_HOME/lib/jaxp.jar $WS/dist/tomcat/lib
  }
  
  count_errors() {
      BASELOG=$1
  
      grep -v "^OK" $BASELOG.log  | \
        grep -v "The args attribute" | grep -v "In compareWeek" \
        > $BASELOG-errors.log
  
      ERRORS=`grep FAIL $BASELOG-errors.log | grep -v "FAIL\*\*\*" |wc -l`
      OK=`grep "^OK" $BASELOG.log |wc -l`
  
      echo 
      echo  LOG=$BASELOG.log
      echo   OK: $OK ERRORS: $ERRORS
      echo 
      echo  Watchdog tail: 
      echo --------------------
      tail -10 $BASELOG.log
      echo  --------------------
  }
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/nightly.sh
  
  Index: nightly.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  PATH=$HOME/bin/nightly:$PATH
  
  
  # Special builds - no ext 
  CLASSPATH=.
  JAVA_HOME=$HOME/java/java1.2 
  TOMCAT_HOME=/home/costin/ws/dist/tomcat
  export TOMCAT_HOME
  export CLASSPATH
  export JAVA_HOME
  
  cvs_get.sh 
  
  echo rm -f $LOGDIR/*
  rm -f  $LOGDIR/*
  echo BUILD `date` >$LOGDIR/nightly.log
  build_tomcat.sh noext >>$LOGDIR/nightly.log 2>&1
  run_watchdog.sh noext >>$LOGDIR/nightly.log 2>&1
  echo BUILD `date` >>$LOGDIR/nightly.log
  
  # Special tomcat build - 1.1
  JAVA_HOME=$HOME/java/java1.1 
  LD_LIBRARY_PATH=$JAVA_HOME/lib:$LD_LIBRARY_PATH
  export LD_LIBRARY_PATH
  CLASSPATH=.
  
  echo BUILD `date` >>$LOGDIR/nightly.log
  build_tomcat.sh jdk11 >>$LOGDIR/nightly.log 2>&1
  #THREADS_FLAG=green
  #export THREADS_FLAG
  # run_watchdog.sh jdk11 >>$LOGDIR/nightly.log 2>&1
  rm -rf $WS/dist/tomcat-1.1
  echo mv $WS/dist/tomcat $WS/dist/tomcat-1.1
  mv $WS/dist/tomcat $WS/dist/tomcat-1.1
  echo done
  #echo BUILD `date` >>$LOGDIR/nightly.log
  #THREADS_FLAG=native
  #unset LD_LIBARY_PATH
  
  # Full build 
  CLASSPATH=$EXTENSIONS
  JAVA_HOME=$HOME/java/java1.2 
  
  echo $EXT
  echo BUILD `date` >>$LOGDIR/nightly.log
  build_tomcat.sh full >>$LOGDIR/nightly.log 2>&1
  run_watchdog.sh full >>$LOGDIR/nightly.log 2>&1
  echo security test
  run_watchdog.sh security >>$LOGDIR/nightly.log 2>&1
  echo security done
  echo BUILD `date` >>$LOGDIR/nightly.log
  
  # mail -s "Tomcat3.3 nightly build " \
  #     [EMAIL PROTECTED] \
  #     < $LOGDIR/nightly.log
  
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/run_watchdog.sh
  
  Index: run_watchdog.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  ######## MAIN 
  
  ROOT=$WS/dist
  if [ "$1" = "-b" ] ; then 
      ROOT=$WS/build
      BUILD=true
      echo Using build $1
      shift
  fi
  if [ "$1" = "-s" ] ; then
      NOSTART=true;
      echo No start
      shift
  fi
  
  EXT=$1
  CLASSPATH=$ANT_HOME/lib/parser.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/jaxp.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/ant.jar:$CLASSPATH
  export CLASSPATH
  
  cd $ROOT
  
  cp $ANT_HOME/lib/ant.jar $ROOT/watchdog/lib
  
  #rm -rf tomcat/webapps/jsp-tests >/dev/null 2>&1 
  #rm -rf tomcat/webapps/servlet-tests >/dev/null 2>&1 
  if [ "$BUILD" != "" ]; then
      ln -s $ROOT/watchdog/webapps/jsp-tests tomcat/webapps >/dev/null 2>&1 
      ln -s $ROOT/watchdog/webapps/servlet-tests tomcat/webapps >/dev/null 2>&1 
  else
      ln -s $ROOT/watchdog/webapps/jsp-tests.war tomcat/webapps >/dev/null 2>&1 
      ln -s $ROOT/watchdog/webapps/servlet-tests.war tomcat/webapps >/dev/null 2>&1 
  fi
  
  echo ---------- Start  tomcat `date` ---------- 
  echo WS=$ROOT EXT=$EXT 
  
  echo Start `date` >$LOGDIR/watchdog-$EXT-1.log 2>&1 
  
  # Port 9080
  mv $ROOT/tomcat/conf/server.xml $ROOT/tomcat/conf/server.xml.orig
  sed s/8080/9080/ <$ROOT/tomcat/conf/server.xml.orig >$ROOT/tomcat/conf/server.xml
  
  if [ "$NOSTART" = "" ]; then
      if [ "$BUILD" = "" ]; then
        start_tomcat.sh $EXT
        if [ "$?" = "1" ]; then
            exit 1
        fi
      else
        start_tomcat.sh -b $EXT
        if [ "$?" = "1" ]; then
            exit 1
        fi
      fi
  fi
  
  cd $ROOT/watchdog
  WATCHDOG_HOME=`pwd`
  export WATCHDOG_HOME
  
  # We know watchdog can fail with JDK1.1. 
  
  echo 
  echo ---------- Running watchdog `date` ---------- 
  echo JAVA_VERSION `$JAVA_HOME/bin/java -version`
  
  rm -rf $TOMCAT_HOME/work/DEFAULT/jsp-tests/jsp/tagext
  time bin/watchdog.sh all localhost 9080 >>$LOGDIR/watchdog-$EXT-1.log 2>&1 
  
  echo Watchdog1 done `date`
  
  count_errors $LOGDIR/watchdog-$EXT-1
  
  $JAVA_HOME/bin/java -version 2>&1 | grep 1.1 >/dev/null 2>&1 
  if [ "$?" = "0" ] ; then
      echo Detected java1.1 - run again with 1.2 
      JAVA_HOME=$HOME/java/java1.2
      echo 
      echo Running watchdog  1.2 `date`
  
      time bin/watchdog.sh all localhost 9080 >$LOGDIR/watchdog-$EXT-1.2.log 2>&1 
  
      echo Watchdog1.2 done `date`
      count_errors $LOGDIR/watchdog-$EXT-1.2
  fi
  
  echo 
  echo Running watchdog  2 `date`
  
  rm -rf $TOMCAT_HOME/work/DEFAULT/jsp-tests/jsp/tagext
  time bin/watchdog.sh all localhost 9080 >$LOGDIR/watchdog-$EXT-2.log 2>&1
  
  echo Watchdog2 done `date`
  count_errors $LOGDIR/watchdog-$EXT-2
  
  echo 
  echo Running watchdog 3 `date`
  
  rm -rf $TOMCAT_HOME/work/DEFAULT/jsp-tests/jsp/tagext
  time bin/watchdog.sh all localhost 9080  >$LOGDIR/watchdog-$EXT-3.log 2>&1 
  
  echo Watchdog3 done `date`
  count_errors $LOGDIR/watchdog-$EXT-3
  
  X=$PATH
  PATH=$HOME/opt/ant-1.2/bin:$PATH
  export PATH
  time sh $TOMCAT_HOME/webapps/admin/WEB-INF/scripts/run-test.sh  -Dport=9080 
>$LOGDIR/sanity-$EXT.log 2>&1
  count_errors $LOGDIR/sanity-$EXT
  PATH=$X
  export PATH
  
  if [ "$NOSTART" = "" ]; then
     stop_tomcat.sh >>$LOGDIR/watchdog-$EXT-1.log 2>&1 
  fi
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/start_tomcat.sh
  
  Index: start_tomcat.sh
  ===================================================================
  #!/bin/sh
  
  
  . $HOME/bin/nightly/functions_build.sh
  
  ######## MAIN 
  
  
  ROOT=$WS/dist
  if [ "$1" = "-b" ] ; then 
      ROOT=$WS/build
      shift
  fi
  
  EXT=$1
  
  CLASSPATH=$ANT_HOME/lib/parser.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/jaxp.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/ant.jar:$CLASSPATH
  export CLASSPATH
  cd $ROOT
  
  echo Start tomcat
  echo TOMCAT_HOME=`pwd`
  echo LOG=$LOGDIR/tomcat-run$EXT.log
  $JAVA_HOME/bin/java -version
  
  # Make sure no tomcat is running
  cd $ROOT/tomcat
  echo Make sure tomcat is stopped
  bin/tomcat.sh stop >/dev/null 2>&1
  
  cd $ROOT/tomcat
  
  rm -f $LOGDIR/tomcat-run$EXT.log >/dev/null 2>&1
  $JAVA_HOME/bin/java -version > $LOGDIR/tomcat-run$EXT.log 2>&1 &
  if [ "$EXT" = "security" ] ; then
    bin/tomcat.sh run -security >> $LOGDIR/tomcat-run$EXT.log 2>&1 &
  else
    bin/tomcat.sh run >> $LOGDIR/tomcat-run$EXT.log 2>&1 &
  fi
  
  i=0
  while [ "$STARTED" != "0" ] ; do
        sleep 1
        # read
        # echo $REPLY | 
          grep "Http10Interceptor"  $LOGDIR/tomcat-run$EXT.log \
                >/dev/null 2>&1
        STARTED=$?
        i=`expr $i + 1`
          if [ "$i" = "120" ] ; then
            echo "Can't start after 120 seconds "
              tail -20  $LOGDIR/tomcat-run$EXT.log 
            exit 1
        fi
        # echo "Wait - not ready $i $STARTED"
        # ls -l $LOGDIR/tomcat-run$EXT.log
  done
  sleep 2
  echo Started ok 
  
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/stop_tomcat.sh
  
  Index: stop_tomcat.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  ######## MAIN 
  
  ROOT=$WS/dist
  if [ "$1" = "-b" ] ; then 
      ROOT=$WS/build
  fi
  
  CLASSPATH=$ANT_HOME/lib/parser.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/jaxp.jar:$CLASSPATH
  CLASSPATH=$ANT_HOME/lib/ant.jar:$CLASSPATH
  export CLASSPATH
  cd $ROOT
  
  # Make sure no tomcat is running
  cd $ROOT/tomcat
  bin/tomcat.sh stop 
  
  pkill java
  killall -9 java
  
  
  
  
  
  1.1                  jakarta-tomcat/src/build/nightly/weekly.sh
  
  Index: weekly.sh
  ===================================================================
  #!/bin/sh
  
  . $HOME/bin/nightly/functions_build.sh
  
  PATH=$HOME/bin/nightly:$PATH
  
  echo "BUILD `date`" >$LOGDIR/weekly.log
  
  CLASSPATH=$EXTENSIONS 
  JAVA_HOME=$HOME/java/java1.2 
  export CLASSPATH
  export JAVA_HOME
  
  cvs_get.sh -f all >>$LOGDIR/weekly.log 2>&1
  build_once.sh >>$LOGDIR/weekly.log 2>&1
  build_tomcat.sh full >>$LOGDIR/weekly.log 2>&1
  
  
  
  
  
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to