@ -40,6 +40,12 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
private WorkspaceConnectionInfo connection ;
private WorkspaceConnectionInfo connection ;
/ * *
* 标记下新创建的远程工作目录 兼容存留的远程目录客户升级后再回退 读取为密文
* 仅保证当前新增是加密的
* /
private boolean newCreated ;
public static RemoteDesignerWorkspaceInfo create ( WorkspaceConnectionInfo connection ) {
public static RemoteDesignerWorkspaceInfo create ( WorkspaceConnectionInfo connection ) {
RemoteDesignerWorkspaceInfo info = new RemoteDesignerWorkspaceInfo ( ) ;
RemoteDesignerWorkspaceInfo info = new RemoteDesignerWorkspaceInfo ( ) ;
info . connection = connection ;
info . connection = connection ;
@ -79,12 +85,21 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
return remindTime ;
return remindTime ;
}
}
public boolean isNewCreated ( ) {
return newCreated ;
}
public void setNewCreated ( boolean newCreated ) {
this . newCreated = newCreated ;
}
@Override
@Override
public void readXML ( XMLableReader reader ) {
public void readXML ( XMLableReader reader ) {
if ( reader . isAttr ( ) ) {
if ( reader . isAttr ( ) ) {
this . name = reader . getAttrAsString ( "name" , StringUtils . EMPTY ) ;
this . name = reader . getAttrAsString ( "name" , StringUtils . EMPTY ) ;
this . remindTime = reader . getAttrAsString ( "remindTime" , StringUtils . EMPTY ) ;
this . remindTime = reader . getAttrAsString ( "remindTime" , StringUtils . EMPTY ) ;
this . newCreated = reader . getAttrAsBoolean ( "newCreated" , false ) ;
}
}
if ( reader . isChildNode ( ) ) {
if ( reader . isChildNode ( ) ) {
String tagName = reader . getTagName ( ) ;
String tagName = reader . getTagName ( ) ;
@ -92,32 +107,49 @@ public class RemoteDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
String url = reader . getAttrAsString ( "url" , StringUtils . EMPTY ) ;
String url = reader . getAttrAsString ( "url" , StringUtils . EMPTY ) ;
String username = reader . getAttrAsString ( "username" , StringUtils . EMPTY ) ;
String username = reader . getAttrAsString ( "username" , StringUtils . EMPTY ) ;
//密码解密
//密码解密
String password = SecurityToolbox . defaultDecrypt ( reader . getAttrAsString ( "password" , StringUtils . EMPTY ) . replaceAll ( " " , "\r\n" ) ) ;
String password = SecurityToolbox . defaultDecrypt ( reader . getAttrAsString ( "password" , StringUtils . EMPTY ) . replaceAll ( StringUtils . BLANK , "\r\n" ) ) ;
String certPath = reader . getAttrAsString ( "certPath" , StringUtils . EMPTY ) ;
String certPath = reader . getAttrAsString ( "certPath" , StringUtils . EMPTY ) ;
String certSecretKey = reader . getAttrAsString ( "certSecretKey" , StringUtils . EMPTY ) ;
String certSecretKey = readCertSecretKey ( reader ) ;
boolean rememberPwd = reader . getAttrAsBoolean ( "rememberPwd" , true ) ;
boolean rememberPwd = reader . getAttrAsBoolean ( "rememberPwd" , true ) ;
this . connection = new WorkspaceConnectionInfo ( url , username , password , certPath , certSecretKey , rememberPwd ) ;
this . connection = new WorkspaceConnectionInfo ( url , username , password , certPath , certSecretKey , rememberPwd ) ;
}
}
}
}
}
}
private String readCertSecretKey ( XMLableReader reader ) {
if ( isNewCreated ( ) ) {
return SecurityToolbox . defaultDecrypt ( reader . getAttrAsString ( "certSecretKey" , StringUtils . EMPTY ) . replaceAll ( StringUtils . BLANK , "\r\n" ) ) ;
} else {
return reader . getAttrAsString ( "certSecretKey" , StringUtils . EMPTY ) ;
}
}
@Override
@Override
public void writeXML ( XMLPrintWriter writer ) {
public void writeXML ( XMLPrintWriter writer ) {
writer . attr ( "name" , name ) ;
writer . attr ( "name" , name ) ;
writer . attr ( "remindTime" , remindTime ) ;
writer . attr ( "remindTime" , remindTime ) ;
writer . attr ( "newCreated" , isNewCreated ( ) ) ;
if ( this . connection ! = null ) {
if ( this . connection ! = null ) {
writer . startTAG ( "Connection" ) ;
writer . startTAG ( "Connection" ) ;
writer . attr ( "url" , connection . getUrl ( ) ) ;
writer . attr ( "url" , connection . getUrl ( ) ) ;
writer . attr ( "username" , connection . getUserName ( ) ) ;
writer . attr ( "username" , connection . getUserName ( ) ) ;
writer . attr ( "password" , SecurityToolbox . defaultEncrypt ( connection . getPassword ( ) ) ) ;
writer . attr ( "password" , SecurityToolbox . defaultEncrypt ( connection . getPassword ( ) ) ) ;
writer . attr ( "certPath" , connection . getCertPath ( ) ) ;
writer . attr ( "certPath" , connection . getCertPath ( ) ) ;
writer . attr ( "certSecretKey" , connection . getCertSecretKey ( ) ) ;
writeCertSecretKey ( writer ) ;
writer . attr ( "rememberPwd" , connection . isRememberPwd ( ) ) ;
writer . attr ( "rememberPwd" , connection . isRememberPwd ( ) ) ;
writer . end ( ) ;
writer . end ( ) ;
}
}
}
}
private void writeCertSecretKey ( XMLPrintWriter writer ) {
if ( isNewCreated ( ) ) {
writer . attr ( "certSecretKey" , SecurityToolbox . defaultEncrypt ( connection . getCertSecretKey ( ) ) ) ;
} else {
writer . attr ( "certSecretKey" , connection . getCertSecretKey ( ) ) ;
}
}
@Override
@Override
@SuppressWarnings ( "squid:S2975" )
@SuppressWarnings ( "squid:S2975" )
public Object clone ( ) throws CloneNotSupportedException {
public Object clone ( ) throws CloneNotSupportedException {