* org.onap.aaf
* ===========================================================================
* Copyright (c) 2018 AT&T Intellectual Property. All rights reserved.
- *
+ *
* Modifications Copyright (C) 2018 IBM.
* ===========================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// Sonar says cannot be static... it's ok. not too many PropAccesses created.
private final SimpleDateFormat iso8601 = newISO8601();
private Symm symm;
-
- public static SimpleDateFormat newISO8601() {
- return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
- }
-
public static final Level DEFAULT = Level.AUDIT;
-
-
private int level;
private Properties props;
private List<String> recursionProtection = null;
logIt = new StreamLogIt(System.out);
init(null);
}
-
+
/**
* This Constructor soly exists to instantiate Servlet Context Based Logging that will call "init" later.
* @param sc
logIt = new StreamLogIt(System.out);
props = new Properties();
}
-
+
public PropAccess(String ... args) {
this(System.out,args);
}
-
+
public PropAccess(PrintStream ps, String[] args) {
logIt = new StreamLogIt(ps==null?System.out:ps);
init(logIt,args);
}
-
+
public PropAccess(LogIt logit, String[] args) {
init(logit, args);
}
-
+
public PropAccess(Properties p) {
this(System.out,p);
}
-
+
public PropAccess(PrintStream ps, Properties p) {
logIt = new StreamLogIt(ps==null?System.out:ps);
init(p);
}
-
+
protected void init(final LogIt logIt, final String[] args) {
this.logIt = logIt;
Properties nprops=new Properties();
}
init(nprops);
}
-
+
+ public static SimpleDateFormat newISO8601() {
+ return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
+ }
+
protected synchronized void init(Properties p) {
// Make sure these two are set before any changes in Logging
name = "cadi";
-
+
props = new Properties();
// First, load related System Properties
for (Entry<Object,Object> es : System.getProperties().entrySet()) {
if (key.startsWith(start)) {
props.put(key, es.getValue());
}
- }
+ }
}
// Second, overlay or fill in with Passed in Props
if (p!=null) {
props.putAll(p);
}
-
+
// Preset LogLevel
- String sLevel = props.getProperty(Config.CADI_LOGLEVEL);
+ String sLevel = props.getProperty(Config.CADI_LOGLEVEL);
// Third, load any Chained Property Files
load(props.getProperty(Config.CADI_PROP_FILES));
-
+
if(sLevel==null) { // if LogLev wasn't set before, check again after Chained Load
- sLevel = props.getProperty(Config.CADI_LOGLEVEL);
+ sLevel = props.getProperty(Config.CADI_LOGLEVEL);
if (sLevel==null) {
level=DEFAULT.maskOf();
} else {
- level=Level.valueOf(sLevel).maskOf();
+ level=Level.valueOf(sLevel).maskOf();
}
}
// Setup local Symmetrical key encryption
System.exit(1);
}
}
-
+
name = props.getProperty(Config.CADI_LOGNAME, name);
-
+
SecurityInfo.setHTTPProtocols(this);
-
+
}
-
-
+
+
private void load(String cadi_prop_files) {
if (cadi_prop_files==null) {
return;
}
String prevKeyFile = props.getProperty(Config.CADI_KEYFILE);
-
+
for(String filename : Split.splitTrim(File.pathSeparatorChar, cadi_prop_files)) {
Properties fileProps = new Properties();
File file = new File(filename);
String value = es.getValue().toString();
props.put(key, value);
if(key.contains("pass")) {
- value = "XXXXXXX";
+ value = "vi XX";
}
printf(Level.DEBUG," %s=%s",key,value);
}
printf(Level.WARN,"Warning: recursive CADI Property %s does not exist",file.getAbsolutePath());
}
}
-
- // Trim
+
+ // Trim
for (Entry<Object, Object> es : props.entrySet()) {
Object value = es.getValue();
if (value instanceof String) {
prevKeyFile=newKeyFile;
}
-
+
String loglevel = props.getProperty(Config.CADI_LOGLEVEL);
if (loglevel!=null) {
try {
}
}
}
-
+
@Override
public void load(InputStream is) throws IOException {
props.load(is);
public StringBuilder buildMsg(Level level, Object[] elements) {
return buildMsg(name,iso8601,level,elements);
}
-
+
/*
* Need to pass in DateFormat per thread, because not marked as thread safe
*/
sb.append("] ");
} else {
int idx = 0;
- if(elements[idx]!=null &&
+ if(elements[idx]!=null &&
elements[idx] instanceof Integer) {
sb.append('-');
sb.append(elements[idx]);
}
return sb;
}
-
+
private static boolean write(boolean first, StringBuilder sb, Object[] elements) {
String s;
for (Object o : elements) {
? symm.depass(encrypted)
: encrypted;
}
-
+
public String encrypt(String unencrypted) throws IOException {
return Symm.ENC+symm.enpass(unencrypted);
}
public String getProperty(String tag) {
return props.getProperty(tag);
}
-
+
public Properties getProperties() {
return props;
public interface LogIt {
public void push(Level level, Object ... elements) ;
}
-
+
private class StreamLogIt implements LogIt {
private PrintStream ps;
-
+
public StreamLogIt(PrintStream ps) {
this.ps = ps;
}