/******************************************************************************* * ============LICENSE_START==================================================== * * org.onap.aaf * * =========================================================================== * * Copyright © 2017 AT&T Intellectual Property. All rights reserved. * * =========================================================================== * * 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. * * See the License for the specific language governing permissions and * * limitations under the License. * * ============LICENSE_END==================================================== * * * * ECOMP is a trademark and service mark of AT&T Intellectual Property. * * ******************************************************************************/ package com.att.cadi.config; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Date; import java.util.HashSet; import com.att.cadi.AbsUserCache; import com.att.cadi.lur.LocalLur; public class UsersDump { /** * @param args */ public static boolean write(OutputStream os, AbsUserCache lur) { PrintStream ps; if(os instanceof PrintStream) { ps = (PrintStream)os; } else { ps = new PrintStream(os); } try { ps.println(""); ps.println(""); ps.println(""); // We loop through Users, but want to write Groups first... therefore, save off print StringBuilder sb = new StringBuilder(); // Obtain all unique role names HashSet groups = new HashSet(); for(AbsUserCache.DumpInfo di : lur.dumpInfo()) { sb.append("\n "); } // Print roles for(String group : groups) { ps.print(" "); } ps.println(sb); ps.println(""); ps.flush(); } catch (Throwable t) { t.printStackTrace(ps); return false; } return true; } /** * * Note: This method returns a String if there's an error, or null if ok. * This unusual style is necessitated by the fact that any Exceptions thrown are likely to * be unlogged and hidden from view, making debugging almost impossible. * * @param writeto * @param up * @return */ public static String updateUsers(String writeto, LocalLur up) { // Dump a Tomcat-user.xml lookalike (anywhere) if(writeto!=null) { // First read content ByteArrayOutputStream baos = new ByteArrayOutputStream(); if(UsersDump.write(baos, up)) { byte[] postulate = baos.toByteArray(); // now get contents of file File file = new File(writeto); boolean writeIt; if(file.exists()) { try { FileInputStream fis = new FileInputStream(file); byte[] orig = new byte[(int)file.length()]; try { fis.read(orig); } finally { fis.close(); } // Starting at third "<" ( line) int startA=0, startB=0; for(int i=0;startA