Search in sources :

Example 1 with AddonNotFoundException

use of org.openecard.addon.AddonNotFoundException in project open-ecard by ecsec.

the class TinySAL method getProtocol.

private SALProtocol getProtocol(@Nonnull ConnectionHandleType handle, @Nullable DIDScopeType scope, @Nonnull String protocolURI) throws UnknownProtocolException, UnknownConnectionHandleException {
    CardStateEntry entry = SALUtils.getCardStateEntry(states, handle, scope != DIDScopeType.GLOBAL);
    SALProtocol protocol = entry.getProtocol(protocolURI);
    if (protocol == null) {
        try {
            protocol = protocolSelector.getSALProtocol(protocolURI);
            entry.setProtocol(protocolURI, protocol);
        } catch (AddonNotFoundException ex) {
            throw new UnknownProtocolException("The protocol URI '" + protocolURI + "' is not available.");
        }
    }
    protocol.getInternalData().put("cardState", entry);
    return protocol;
}
Also used : CardStateEntry(org.openecard.common.sal.state.CardStateEntry) AddonNotFoundException(org.openecard.addon.AddonNotFoundException) SALProtocol(org.openecard.addon.sal.SALProtocol) UnknownProtocolException(org.openecard.common.sal.exception.UnknownProtocolException)

Example 2 with AddonNotFoundException

use of org.openecard.addon.AddonNotFoundException in project open-ecard by ecsec.

the class ActivateAction method init.

@Override
public void init(Context ctx) {
    tokenHandler = new TCTokenHandler(ctx);
    this.ctx = ctx;
    gui = ctx.getUserConsent();
    dispatcher = ctx.getDispatcher();
    manager = ctx.getManager();
    settingsAndDefaultView = ctx.getViewController();
    try {
        AddonSpecification addonSpecStatus = manager.getRegistry().search("Status");
        statusAction = manager.getAppPluginAction(addonSpecStatus, "getStatus");
        AddonSpecification addonSpecPinMngmt = manager.getRegistry().search("PIN-Plugin");
        pinManAction = manager.getAppExtensionAction(addonSpecPinMngmt, "GetCardsAndPINStatusAction");
    } catch (AddonNotFoundException ex) {
        // this should never happen because the status and pin plugin are always available
        String msg = "Failed to get Status or PIN Plugin.";
        LOG.error(msg, ex);
        throw new RuntimeException(msg, ex);
    }
}
Also used : AddonNotFoundException(org.openecard.addon.AddonNotFoundException) TCTokenHandler(org.openecard.binding.tctoken.TCTokenHandler) AddonSpecification(org.openecard.addon.manifest.AddonSpecification)

Example 3 with AddonNotFoundException

use of org.openecard.addon.AddonNotFoundException in project open-ecard by ecsec.

the class ActivationController method activate.

/**
 * Performs an activation according to BSI TR-03124-1, but does not perform the return to web session part.
 * A result containing the outcome of the
 *
 * @param url
 * @return
 */
public ActivationResult activate(String url) {
    // create request uri and extract query strings
    URI requestURI = URI.create(url);
    String path = requestURI.getPath();
    // remove leading '/'
    String resourceName = path.substring(1, path.length());
    // find suitable addon
    String failureMessage;
    AddonManager manager = sctx.getManager();
    AddonSelector selector = new AddonSelector(manager);
    try {
        if (manager == null || selector == null) {
            throw new IllegalStateException("Addon initialization failed.");
        } else {
            AppPluginAction action = selector.getAppPluginAction(resourceName);
            String rawQuery = requestURI.getRawQuery();
            Map<String, String> queries = new HashMap<>(0);
            if (rawQuery != null) {
                queries = HttpRequestLineUtils.transform(rawQuery);
            }
            BindingResult result = action.execute(null, queries, null, null);
            return createActivationResult(result);
        }
    } catch (AddonNotFoundException ex) {
        failureMessage = ex.getMessage();
        LOG.info("Addon not found.", ex);
    } catch (UnsupportedEncodingException ex) {
        failureMessage = "Unsupported encoding.";
        LOG.warn(failureMessage, ex);
    } catch (Exception ex) {
        failureMessage = ex.getMessage();
        LOG.warn(ex.getMessage(), ex);
    }
    LOG.info("Returning error as INTERRUPTED result.");
    return new ActivationResult(INTERRUPTED, failureMessage);
}
Also used : AddonSelector(org.openecard.addon.AddonSelector) BindingResult(org.openecard.addon.bind.BindingResult) HashMap(java.util.HashMap) AddonNotFoundException(org.openecard.addon.AddonNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) AppPluginAction(org.openecard.addon.bind.AppPluginAction) URI(java.net.URI) AddonNotFoundException(org.openecard.addon.AddonNotFoundException) UnsupportedEncodingException(java.io.UnsupportedEncodingException) AddonManager(org.openecard.addon.AddonManager)

Example 4 with AddonNotFoundException

use of org.openecard.addon.AddonNotFoundException in project open-ecard by ecsec.

the class HttpAppPluginActionHandler method handle.

@Override
public void handle(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext context) throws HttpException, IOException {
    LOG.debug("HTTP request: {}", httpRequest.toString());
    CORSFilter corsFilter = new CORSFilter();
    HttpResponse corsResp = corsFilter.preProcess(httpRequest, context);
    if (corsResp != null) {
        // CORS Response created, return it to the caller
        // This is either a preflight response, or a block, because the Origin mismatched
        LOG.debug("HTTP response: {}", corsResp);
        Http11Response.copyHttpResponse(corsResp, httpResponse);
        return;
    }
    // deconstruct request uri
    String uri = httpRequest.getRequestLine().getUri();
    URI requestURI = URI.create(uri);
    String path = requestURI.getPath();
    // remove leading '/'
    String resourceName = path.substring(1, path.length());
    // find suitable addon
    try {
        AppPluginAction action = selector.getAppPluginAction(resourceName);
        String rawQuery = requestURI.getRawQuery();
        Map<String, String> queries = new HashMap<>(0);
        if (rawQuery != null) {
            queries = HttpRequestLineUtils.transform(rawQuery);
        }
        RequestBody body = null;
        if (httpRequest instanceof HttpEntityEnclosingRequest) {
            LOG.debug("Request contains an entity.");
            body = getRequestBody(httpRequest, resourceName);
        }
        Headers headers = readReqHeaders(httpRequest);
        // and add some special values to the header section
        headers.setHeader(METHOD_HDR, httpRequest.getRequestLine().getMethod());
        BindingResult bindingResult = action.execute(body, queries, headers, null);
        HttpResponse response = createHTTPResponseFromBindingResult(bindingResult);
        response.setParams(httpRequest.getParams());
        LOG.debug("HTTP response: {}", response);
        Http11Response.copyHttpResponse(response, httpResponse);
        // CORS post processing
        corsFilter.postProcess(httpRequest, httpResponse, context);
    } catch (AddonNotFoundException ex) {
        if (path.equals("/")) {
            new IndexHandler().handle(httpRequest, httpResponse, context);
        } else if (path.startsWith("/")) {
            new FileHandler(new DocumentRoot("/www", "/www-files")).handle(httpRequest, httpResponse, context);
        } else {
            new DefaultHandler().handle(httpRequest, httpResponse, context);
        }
    }
}
Also used : BindingResult(org.openecard.addon.bind.BindingResult) HashMap(java.util.HashMap) AddonNotFoundException(org.openecard.addon.AddonNotFoundException) Headers(org.openecard.addon.bind.Headers) DocumentRoot(org.openecard.control.binding.http.common.DocumentRoot) HttpResponse(org.openecard.apache.http.HttpResponse) AppPluginAction(org.openecard.addon.bind.AppPluginAction) URI(java.net.URI) HttpEntityEnclosingRequest(org.openecard.apache.http.HttpEntityEnclosingRequest) RequestBody(org.openecard.addon.bind.RequestBody)

Aggregations

AddonNotFoundException (org.openecard.addon.AddonNotFoundException)4 URI (java.net.URI)2 HashMap (java.util.HashMap)2 AppPluginAction (org.openecard.addon.bind.AppPluginAction)2 BindingResult (org.openecard.addon.bind.BindingResult)2 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 AddonManager (org.openecard.addon.AddonManager)1 AddonSelector (org.openecard.addon.AddonSelector)1 Headers (org.openecard.addon.bind.Headers)1 RequestBody (org.openecard.addon.bind.RequestBody)1 AddonSpecification (org.openecard.addon.manifest.AddonSpecification)1 SALProtocol (org.openecard.addon.sal.SALProtocol)1 HttpEntityEnclosingRequest (org.openecard.apache.http.HttpEntityEnclosingRequest)1 HttpResponse (org.openecard.apache.http.HttpResponse)1 TCTokenHandler (org.openecard.binding.tctoken.TCTokenHandler)1 UnknownProtocolException (org.openecard.common.sal.exception.UnknownProtocolException)1 CardStateEntry (org.openecard.common.sal.state.CardStateEntry)1 DocumentRoot (org.openecard.control.binding.http.common.DocumentRoot)1