Friday, August 17, 2012

How to import certification to java cacert

1. clicking on the certificate error in your browser to view the certificate. and export the certification  as 1.cer.

2) Import to java cacert:

 keytool -import -trustcacerts -file C:\Users\jiali\Desktop\1\1.cer -keystore
"C:\ProgramData\Adobe\CS5\jre\lib\security\cacerts"
3. Add to Trusted Root Certification Authorities in windows MMC:
To manage trusted root certificates for a local computer
  1. Click Start, click Start Search, type mmc, and then press ENTER.
  2. On the File menu, click Add/Remove Snap-in.
  3. Under Available snap-ins, click Local Group Policy Object Editor,click Add, select the computer whose local Group Policy object (GPO) you want to edit, and then click Finish.
  4. If you have no more snap-ins to add to the console, click OK.
  5. In the console tree, go to Local Computer PolicyComputer ConfigurationWindows SettingsSecurity Settings, and then click Public Key Policies.
  6. Double-click Certificate Path Validation Settings,and thenclick the Stores tab.
  7. Select the Define these policy settings check box.
  8. Under Per user certificate stores, clear the Allow user trusted root CAs to be used to validate certificates and Allow users to trust peer trust certificates check boxes.
  9. Under Root certificate stores, select the root CAs that the client computers can trust, and then click OK to apply the new settings.
    http://technet.microsoft.com/en-us/library/cc754841.aspx
    https://www.globalsign.com/support/intermediate/intermediate_windows.php





After import to java cacert, then CMIS workbench tool can access the SSL server.

Monday, August 13, 2012

Using exec and sed to replace string in files

1. How to unlock files:

find . -exec chflags nouchg {} \;

2. How to replace string in files:

find . */info.xml -type f -exec sed -i '' 's/<\/testcase>/<serverinfo>CQ<\/serverinfo><\/abc>/g' {} \;


3. Rename files in the folder:

find . -name "1.idea*" -exec mv '{}' '{}.idea' \;

Notes: rename all the files start with '1.idea' to append '.idea' at the file name.

Wednesday, August 8, 2012

Check signature and version info on Mac and Windows


Mac:


Following command are very useful: codesign, defauls.


#!/bin/bash
files=(
"/Library/Services/AdobeDrive4.service" "/Volumes/AdobeDrive4-mul/Install.app"
"/Library/Application Support/Adobe/Adobe Drive 4/Adobe Drive.app"
)
echo "-----------------------------------------------------------------codesign -v -ddd -----------------------------------------------------------------"
for file in "${files[@]}"
do
echo "codesign -v -vvv " "$file"
codesign -v -vvv "$file"
done

echo "-----------------------------------------------------------------codesign -d -ddd -----------------------------------------------------------------"

for file in "${files[@]}"
do
echo "codesign -d -vvv " "$file"
codesign -d -vvv "$file"
done

echo "-----------------------------------------------------------------spctl --assess -v -----------------------------------------------------------------"

files=(
"/Volumes/AdobeDrive4-mul/Install.app"
)

for file in "${files[@]}"
do
echo "spctl --assess -v " "$file"
spctl --assess -v "$file"
done

#!/bin/bash

echo "-----------------------------------------------------------------get version -----------------------------------------------------------------"

files=(
"/Library/Application Support/Adobe/Adobe Drive 4/Adobe Drive.app"
)

for file in "${files[@]}"
do
VERSION=`defaults read "$file/Contents/Info" CFBundleShortVersionString`
echo "get file version " "$file" "$VERSION"
done



Win:

Useful commands : powershell -command , and wmic datafile 


import subprocess
import os

ADx86Folder = "C:\\'Program Files (x86)'\\'Common Files'\\Adobe\\'Adobe Drive 4'";
ADx64Folder = "C:\\'Program Files'\\'Common Files'\\Adobe\\'Adobe Drive 4'";
ExpectBuildNumber = "4.0.1.16";


W64BIT = "win64bit";
W32BIT = "win32bit";
Mac    = "osx";

platform = W32BIT;
if os.path.exists("C:\\Program Files (x86)\\"):
    platform = W64BIT;
if os.path.exists("/Volumes/"):
    platform = Mac;

files =[];    
if platform == W32BIT:
    files=["%s\\ADConnect.exe"%(ADx64Folder),
       "%s\\ADFSMenu.dll"%(ADx64Folder),];
    pass
def getSigNatureCommand(filename):
    sCmd = "powershell -command (get-authenticodesignature \"%s\").status -eq 'valid'"%(filename);
    return sCmd;
    pass
def getFileVersionCommand(filename):
    #sCmd = "powershell -command (get-childitem \"%s\").VersionInfo.FileVersion "%(filename);
    sCmd = "wmic datafile where name=\"%s\" get version "%(filename);
    sCmd = sCmd.replace("'","").replace("\\","/").replace("/","\\\\");
    return sCmd;
    pass

def runValidation():
    
    try:
        vResult = False;
        sResult = False;
        result  = True;
        for f in files:
            print f;
            vResult = False;
            callcmd = getFileVersionCommand(f);
            #print callcmd;
            process = subprocess.Popen(callcmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE);
            line = "";
            while process.poll() == None:
                t = process.stdout.readline().strip();
                if t != "":
                    line = t;
                if line == ExpectBuildNumber:
                    vResult = True;
                    print "Version is right,Expect is %s"%(ExpectBuildNumber);
                    break;
                    pass
            if vResult == False:
                print "~~~~~~~~~~~~~~~~~~~~~~:Version is wrong,Expect is %s, Result is %s.~~~~~~~~~~~~~~~~~~~~~~"%(ExpectBuildNumber,line);
                result = False;
                pass
            sResult = False;
            callcmd = getSigNatureCommand(f);
            #print callcmd;
            process = subprocess.Popen(callcmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE);
            [out,error] =process.communicate();
            line = out.strip();
            if line == "True":
                print "Signature is right"
                sResult = True;
                pass
            if sResult == False:
                print "~~~~~~~~~~~~~~~~~~~~~~:Signature is Wrong.~~~~~~~~~~~~~~~~~~~~~~"
                print callcmd;
                print line + str(error);
                result = False;
                pass            
        print "##########################################################";
        if result:
            print "Check result is PASS"
        else:
            print "Check result is Failure"
        print "##########################################################";
    except Exception,e:
        print str(e);
        pass
runValidation();