import org.onap.aaf.cadi.client.Future;
import org.onap.aaf.cadi.client.Rcli;
import org.onap.aaf.cadi.client.Retryable;
-import org.onap.aaf.cadi.cm.Factory;
+import org.onap.aaf.cadi.configure.Factory;
import org.onap.aaf.cadi.util.FQI;
import org.onap.aaf.misc.env.APIException;
import org.onap.aaf.misc.env.Env;
import certman.v1_0.CertInfo;
public class CMArtifactShow extends Page {
-
- public static final String HREF = "/gui/cmarti";
- public static final String NAME = "ArtifactsShow";
- private static ArtiTable arti;
- public static SlotCode<AuthzTrans> slotCode;
- private enum Params{id,ns};
+
+ public static final String HREF = "/gui/cmarti";
+ public static final String NAME = "ArtifactsShow";
+ private static ArtiTable arti;
+ public static SlotCode<AuthzTrans> slotCode;
+ private enum Params{id,ns};
- public CMArtifactShow(final AAF_GUI gui, Page ... breadcrumbs) throws APIException, IOException {
- super(gui.env, NAME, HREF, Params.values() ,
- new BreadCrumbs(breadcrumbs),
- arti = new ArtiTable(gui.env)
- );
- // Setting so we can get access to HTMLGen clone and Slots
- arti.set(this,slotCode);
- }
-
- private static class ArtiTable extends Table<AAF_GUI, AuthzTrans> {
- private static Model model;
- private SlotCode<AuthzTrans> sc;
- enum Params {id,ns};
- public ArtiTable(AuthzEnv env) {
- super((String)null,env.newTransNoAvg(),model = new Model(),
- slotCode = new SlotCode<AuthzTrans>(false,env,NAME,Params.values()) {
- @Override
- public void code(final Cache<HTMLGen> cache, final HTMLGen hgen) throws APIException, IOException {
- cache.dynamic(hgen, new DynamicCode<HTMLGen,AAF_GUI,AuthzTrans>() {
- @Override
- public void code(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) throws APIException, IOException {
- Mark js = new Mark();
- hgen.js(js).function("newArtifact")
- .text("machine=document.getElementById('machine');")
- .text("window.open('"
- +CMArtiChangeForm.HREF+
- "?id="+get(trans, Params.id,"")+
- "&ns="+get(trans, Params.ns,"")+
- "&machine='+machine.value,'_self');"
- ).end(js);
- hgen.leaf("input","id=machine","style=margin:1em 1em 1em 1em;width:30%").end();
- hgen.leaf(HTMLGen.A,"class=greenbutton","href=javascript:newArtifact()","style=color:white;").text("New Machine").end();
- }
- });
- }
- },"class=std");
- }
-
+ public CMArtifactShow(final AAF_GUI gui, Page ... breadcrumbs) throws APIException, IOException {
+ super(gui.env, NAME, HREF, Params.values() ,
+ new BreadCrumbs(breadcrumbs),
+ arti = new ArtiTable(gui.env)
+ );
+ // Setting so we can get access to HTMLGen clone and Slots
+ arti.set(this,slotCode);
+ }
+
+ private static class ArtiTable extends Table<AAF_GUI, AuthzTrans> {
+ private static Model model;
+ private SlotCode<AuthzTrans> sc;
+ enum Params {id,ns};
+ public ArtiTable(AuthzEnv env) {
+ super((String)null,env.newTransNoAvg(),model = new Model(),
+ slotCode = new SlotCode<AuthzTrans>(false,env,NAME,Params.values()) {
+ @Override
+ public void code(final Cache<HTMLGen> cache, final HTMLGen hgen) throws APIException, IOException {
+ cache.dynamic(hgen, new DynamicCode<HTMLGen,AAF_GUI,AuthzTrans>() {
+ @Override
+ public void code(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) throws APIException, IOException {
+ Mark js = new Mark();
+ hgen.js(js).function("newArtifact")
+ .text("machine=document.getElementById('machine');")
+ .text("window.open('"
+ +CMArtiChangeForm.HREF+
+ "?id="+get(trans, Params.id,"")+
+ "&ns="+get(trans, Params.ns,"")+
+ "&machine='+machine.value,'_self');"
+ ).end(js);
+ hgen.leaf("input","id=machine","style=margin:1em 1em 1em 1em;width:30%").end();
+ hgen.leaf(HTMLGen.A,"class=greenbutton","href=javascript:newArtifact()","style=color:white;").text("New FQDN").end();
+ }
+ });
+ }
+ },"class=std");
+ }
+
- public void set(CMArtifactShow cmArtifactShow, SlotCode<AuthzTrans> sc) {
- this.sc = sc;
- model.set(cmArtifactShow,sc);
- }
-
- @Override
- protected String title(AuthzTrans trans) {
- StringBuilder sb = new StringBuilder("X509 Certificates");
- if(sc!=null) { // initialized
- sb.append(" for ");
- String id = sc.get(trans,Params.id,"");
- sb.append(id);
- if(id.indexOf('@')<0) {
- sb.append('@');
- sb.append(FQI.reverseDomain(sc.get(trans, Params.ns,"missingDomain")));
- }
- }
- return sb.toString();
- }
- }
- /**
- * Implement the table content for Cred Detail
- *
- * @author Jeremiah
- *
- */
- private static class Model implements Table.Data<AAF_GUI,AuthzTrans> {
- private CMArtifactShow cas;
- private SlotCode<AuthzTrans> sc;
+ public void set(CMArtifactShow cmArtifactShow, SlotCode<AuthzTrans> sc) {
+ this.sc = sc;
+ model.set(cmArtifactShow,sc);
+ }
+
+ @Override
+ protected String title(AuthzTrans trans) {
+ StringBuilder sb = new StringBuilder("X509 Certificates");
+ if(sc!=null) { // initialized
+ sb.append(" for ");
+ String id = sc.get(trans,Params.id,"");
+ sb.append(id);
+ if(id.indexOf('@')<0) {
+ sb.append('@');
+ sb.append(FQI.reverseDomain(sc.get(trans, Params.ns,"missingDomain")));
+ }
+ }
+ return sb.toString();
+ }
+ }
+ /**
+ * Implement the table content for Cred Detail
+ *
+ * @author Jeremiah
+ *
+ */
+ private static class Model implements Table.Data<AAF_GUI,AuthzTrans> {
+ private CMArtifactShow cas;
+ private SlotCode<AuthzTrans> sc;
- // Covering for Constructor Order
- private void set(CMArtifactShow cas, SlotCode<AuthzTrans> sc) {
- this.cas = cas;
- this.sc = sc;
- }
+ // Covering for Constructor Order
+ private void set(CMArtifactShow cas, SlotCode<AuthzTrans> sc) {
+ this.cas = cas;
+ this.sc = sc;
+ }
- private static final String[] headers = new String[]{"Machine","Directory","CA","Renews","Expires",""};
- @Override
- public String[] headers() {
- return headers;
- }
-
- @Override
- public Cells get(final AuthzTrans trans, final AAF_GUI gui) {
- String str = sc.get(trans,Params.id, null);
- if(str==null) {
- return Cells.EMPTY;
- }
- final String id = str.indexOf('@')>=0?str:str + '@' + FQI.reverseDomain(sc.get(trans,Params.ns, ""));
- final ArrayList<AbsCell[]> rv = new ArrayList<AbsCell[]>();
- final TimeTaken tt = trans.start("AAF X509 Details",Env.REMOTE);
- try {
- gui.cmClientAsUser(trans.getUserPrincipal(),new Retryable<Void>() {
- @Override
- public Void code(Rcli<?> client) throws CadiException, ConnectException, APIException {
- Future<CertInfo> fuCI = client.read("/cert/id/"+id,gui.certInfoDF);
- Future<Artifacts> fuArt = client.read("/cert/artifacts?mechid="+id, gui.artifactsDF);
-
- X509Certificate[] lc;
- if(fuCI.get(AAFcli.timeout())) {
- TimeTaken tt1 = trans.start("x509Certificate", Env.SUB);
- try {
- Collection<? extends Certificate> xcs = Factory.toX509Certificate(fuCI.value.getCerts());
- lc = new X509Certificate[xcs.size()];
- xcs.toArray(lc);
- } catch (CertificateException e) {
- trans.error().log(e,"Bad Certificate entry");
- throw new CadiException(e);
- } finally {
- tt1.done();
- }
- } else {
- lc = null;
- trans.error().log("Cannot retrieve Certificates for " + id);
- }
- if(fuArt.get(AAFcli.timeout())) {
- for(Artifact arti : fuArt.value.getArtifact()) {
- StringWriter sw = new StringWriter();
- HTMLGen hgen = cas.clone(sw);
- Mark mark = new Mark();
- hgen.leaf(HTMLGen.A,"class=button",
- "href="+CMArtiChangeForm.HREF+"?id="+arti.getMechid() +"&machine="+arti.getMachine()+"&ns="+arti.getNs())
- .text("Details")
- .end(mark);
- Date last = null;
- if(lc!=null) {
- for(X509Certificate xc : lc) {
- if(xc.getSubjectDN().getName().contains("CN="+arti.getMachine())) {
- if(last==null || last.before(xc.getNotAfter())) {
- last = xc.getNotAfter();
- }
- }
- }
- }
- GregorianCalendar renew;
- if(last!=null) {
- renew = new GregorianCalendar();
- renew.setTime(last);
- renew.add(GregorianCalendar.DAY_OF_MONTH,arti.getRenewDays()*-1);
- } else {
- renew = null;
- }
+ private static final String[] headers = new String[]{"FQDN","Directory","CA","Renews","Expires",""};
+ @Override
+ public String[] headers() {
+ return headers;
+ }
+
+ @Override
+ public Cells get(final AuthzTrans trans, final AAF_GUI gui) {
+ String str = sc.get(trans,Params.id, null);
+ if(str==null) {
+ return Cells.EMPTY;
+ }
+ final String id = str.indexOf('@')>=0?str:str + '@' + FQI.reverseDomain(sc.get(trans,Params.ns, ""));
+ final ArrayList<AbsCell[]> rv = new ArrayList<>();
+ final TimeTaken tt = trans.start("AAF X509 Details",Env.REMOTE);
+ try {
+ gui.cmClientAsUser(trans.getUserPrincipal(),new Retryable<Void>() {
+ @Override
+ public Void code(Rcli<?> client) throws CadiException, ConnectException, APIException {
+ Future<CertInfo> fuCI = client.read("/cert/id/"+id,gui.certInfoDF);
+ Future<Artifacts> fuArt = client.read("/cert/artifacts?mechid="+id, gui.artifactsDF);
+
+ X509Certificate[] lc;
+ if(fuCI.get(AAFcli.timeout())) {
+ TimeTaken tt1 = trans.start("x509Certificate", Env.SUB);
+ try {
+ Collection<? extends Certificate> xcs = Factory.toX509Certificate(fuCI.value.getCerts());
+ lc = new X509Certificate[xcs.size()];
+ xcs.toArray(lc);
+ } catch (CertificateException e) {
+ trans.error().log(e,"Bad Certificate entry");
+ throw new CadiException(e);
+ } finally {
+ tt1.done();
+ }
+ } else {
+ lc = null;
+ trans.error().log("Cannot retrieve Certificates for " + id);
+ }
+ if(fuArt.get(AAFcli.timeout())) {
+ for(Artifact arti : fuArt.value.getArtifact()) {
+ StringWriter sw = new StringWriter();
+ HTMLGen hgen = cas.clone(sw);
+ Mark mark = new Mark();
+ hgen.leaf(HTMLGen.A,"class=button",
+ "href="+CMArtiChangeForm.HREF+"?id="+arti.getMechid() +"&machine="+arti.getMachine()+"&ns="+arti.getNs())
+ .text("Details")
+ .end(mark);
+ Date last = null;
+ if(lc!=null) {
+ for(X509Certificate xc : lc) {
+ if(xc.getSubjectDN().getName().contains("CN="+arti.getMachine())) {
+ if(last==null || last.before(xc.getNotAfter())) {
+ last = xc.getNotAfter();
+ }
+ }
+ }
+ }
+ GregorianCalendar renew;
+ if(last!=null) {
+ renew = new GregorianCalendar();
+ renew.setTime(last);
+ renew.add(GregorianCalendar.DAY_OF_MONTH,arti.getRenewDays()*-1);
+ } else {
+ renew = null;
+ }
- rv.add(new AbsCell[] {
- new TextCell(arti.getMachine(),"style=width:20%;"),
- new TextCell(arti.getDir(),"style=width:25%;"),
- new TextCell(arti.getCa(),"style=width:2%;text-align:center;"),
- new TextCell(renew==null?
- arti.getRenewDays().toString() + " days before Exp":
- Chrono.dateOnlyStamp(renew),"style=width:6%;text-align:center;"),
- new TextCell(last==null?"None Deployed":Chrono.dateOnlyStamp(last),"style=width:5%;text-align:center;"),
- new TextCell(sw.toString(),"style=width:10%;text-align:center;")
- });
- }
- } else {
- rv.add(new AbsCell[] {new TextCell("*** Data Unavailable ***")});
- }
- return null;
- }
- });
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- tt.done();
- }
- return new Cells(rv,null);
- }
+ rv.add(new AbsCell[] {
+ new TextCell(arti.getMachine(),"style=width:20%;"),
+ new TextCell(arti.getDir(),"style=width:25%;"),
+ new TextCell(arti.getCa(),"style=width:2%;text-align:center;"),
+ new TextCell(renew==null?
+ arti.getRenewDays().toString() + " days before Exp":
+ Chrono.dateOnlyStamp(renew),"style=width:6%;text-align:center;"),
+ new TextCell(last==null?"None Deployed":Chrono.dateOnlyStamp(last),"style=width:5%;text-align:center;"),
+ new TextCell(sw.toString(),"style=width:10%;text-align:center;")
+ });
+ }
+ } else {
+ rv.add(new AbsCell[] {new TextCell("*** Data Unavailable ***")});
+ }
+ return null;
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ tt.done();
+ }
+ return new Cells(rv,null);
+ }
- @Override
- public void prefix(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) {
- }
+ @Override
+ public void prefix(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) {
+ }
- @Override
- public void postfix(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) {
- }
+ @Override
+ public void postfix(AAF_GUI state, AuthzTrans trans, final Cache<HTMLGen> cache, final HTMLGen hgen) {
+ }
- }
-
+ }
+
}