Package jcifs.dcerpc.ndr

Examples of jcifs.dcerpc.ndr.NdrBuffer$Entry


        throw new DcerpcException("DCERPC transport not supported: " + url);
    }

    public void sendrecv(DcerpcMessage msg) throws DcerpcException, IOException {
        byte[] stub, frag;
        NdrBuffer buf, fbuf;
        boolean isLast, isDirect;
        DcerpcException de;

        if (state == 0) {
            state = 1;
            DcerpcMessage bind = new DcerpcBind(binding, this);
            sendrecv(bind);
        }

        isDirect = msg instanceof DcerpcBind;

        try {
            stub = jcifs.smb.BufferCache.getBuffer();
        } catch (InterruptedException ie) {
            throw new IOException(ie.getMessage());
        }
        try {
            int off, tot, n;

            buf = new NdrBuffer(stub, 0);

            msg.flags = DCERPC_FIRST_FRAG | DCERPC_LAST_FRAG;
            msg.call_id = call_id;

            msg.encode(buf);

            tot = buf.getLength();
            off = 0;
            while (off < tot) {
                msg.call_id = call_id++;

                if ((tot - off) > max_xmit) {
                    /* Multiple fragments. Need to set flags and length
                     * and re-encode header
                    msg.length = n = max_xmit;
                    msg.flags &= ~DCERPC_LAST_FRAG;
                    buf.start = off;
                    buf.reset();
                    msg.encode_header(buf);
                     */
                    throw new DcerpcException("Fragmented request PDUs currently not supported");
                } else {
                    n = tot - off;
                }

                doSendFragment(stub, off, n, isDirect);
                off += n;
            }

            doReceiveFragment(stub, isDirect);
            buf.reset();
            msg.decode_header(buf);

            off = 24;
            if (msg.ptype == 2 && msg.isFlagSet(DCERPC_LAST_FRAG) == false)
                off = msg.length;

            frag = null;
            fbuf = null;
            while (msg.isFlagSet(DCERPC_LAST_FRAG) == false) {
                int stub_frag_len;

                if (frag == null) {
                    frag = new byte[max_recv];
                    fbuf = new NdrBuffer(frag, 0);
                }

                doReceiveFragment(frag, isDirect);
                fbuf.reset();
                msg.decode_header(fbuf);
                stub_frag_len = msg.length - 24;

                if ((off + stub_frag_len) > stub.length) {
                    // shouldn't happen if alloc_hint is correct or greater
                    byte[] tmp = new byte[off + stub_frag_len];
                    System.arraycopy(stub, 0, tmp, 0, off);
                    stub = tmp;
                }

                System.arraycopy(frag, 24, stub, off, stub_frag_len);
                off += stub_frag_len;
            }

            buf = new NdrBuffer(stub, 0);
            msg.decode(buf);
        } finally {
            jcifs.smb.BufferCache.releaseBuffer(stub);
        }

View Full Code Here


        }
}
    }
    public void sendrecv(DcerpcMessage msg) throws DcerpcException, IOException {
        byte[] stub, frag;
        NdrBuffer buf, fbuf;
        boolean isLast, isDirect;
        DcerpcException de;

        if (state == 0) {
            bind();
        }

        isDirect = true;

        stub = jcifs.smb.BufferCache.getBuffer();
        try {
            int off, tot, n;

            buf = new NdrBuffer(stub, 0);

            msg.flags = DCERPC_FIRST_FRAG | DCERPC_LAST_FRAG;
            msg.call_id = call_id++;

            msg.encode(buf);

            if (securityProvider != null) {
                buf.setIndex(0);
                securityProvider.wrap(buf);
            }

            tot = buf.getLength() - 24;
            off = 0;

            while (off < tot) {
                n = tot - off;

                if ((24 + n) > max_xmit) {
                    msg.flags &= ~DCERPC_LAST_FRAG;
                    n = max_xmit - 24;
                } else {
                    msg.flags |= DCERPC_LAST_FRAG;
                    isDirect = false;
                    msg.alloc_hint = n;
                }

                msg.length = 24 + n;

                if (off > 0)
                    msg.flags &= ~DCERPC_FIRST_FRAG;

                if ((msg.flags & (DCERPC_FIRST_FRAG | DCERPC_LAST_FRAG)) != (DCERPC_FIRST_FRAG | DCERPC_LAST_FRAG)) {
                    buf.start = off;
                    buf.reset();
                    msg.encode_header(buf);
                    buf.enc_ndr_long(msg.alloc_hint);
                    buf.enc_ndr_short(0); /* context id */
                    buf.enc_ndr_short(msg.getOpnum());
                }

                doSendFragment(stub, off, msg.length, isDirect);
                off += n;
            }

            doReceiveFragment(stub, isDirect);
            buf.reset();
            buf.setIndex(8);
            buf.setLength(buf.dec_ndr_short());

            if (securityProvider != null)
                securityProvider.unwrap(buf);

            buf.setIndex(0);

            msg.decode_header(buf);

            off = 24;
            if (msg.ptype == 2 && msg.isFlagSet(DCERPC_LAST_FRAG) == false)
                off = msg.length;

            frag = null;
            fbuf = null;
            while (msg.isFlagSet(DCERPC_LAST_FRAG) == false) {
                int stub_frag_len;

                if (frag == null) {
                    frag = new byte[max_recv];
                    fbuf = new NdrBuffer(frag, 0);
                }

                doReceiveFragment(frag, isDirect);
                fbuf.reset();
                fbuf.setIndex(8);
                fbuf.setLength(fbuf.dec_ndr_short());

                if (securityProvider != null)
                    securityProvider.unwrap(fbuf);

                fbuf.reset();
                msg.decode_header(fbuf);
                stub_frag_len = msg.length - 24;

                if ((off + stub_frag_len) > stub.length) {
                    // shouldn't happen if alloc_hint is correct or greater
                    byte[] tmp = new byte[off + stub_frag_len];
                    System.arraycopy(stub, 0, tmp, 0, off);
                    stub = tmp;
                }

                System.arraycopy(frag, 24, stub, off, stub_frag_len);
                off += stub_frag_len;
            }

            buf = new NdrBuffer(stub, 0);
            msg.decode(buf);
        } finally {
            jcifs.smb.BufferCache.releaseBuffer(stub);
        }

View Full Code Here

    int index = ndrBuffer.index;

    ndrBuffer.advance(8);

    NdrBuffer derivedNrdBuffer = ndrBuffer.derive(index);

    for (int i = 0; i < 8; i++) {
      derivedNrdBuffer.enc_ndr_small(_clientCredential[i]);
    }

    ndrBuffer.enc_ndr_long(_negotiateFlags);
  }
View Full Code Here

  }

  @Override
  protected void doDelete(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {
    Entry e = entry(req);
    S3Object remove = map.remove(e);
    if (remove == null) {
      resp.sendError(404, "Not found " + e);
    } else {
      resp.sendError(HttpURLConnection.HTTP_NO_CONTENT, "Deleted");
View Full Code Here

    }

  }

  private Entry entry(HttpServletRequest req) {
    return new Entry(key(uri(req)));
  }
View Full Code Here

        log("doGet " + uri);
    if ("/".equals(uri.getPath())) {
      list(req, resp);
    } else {
      String key = uri.getPath().substring(1);
      Entry e = new Entry(key);
      S3Object obj = map.get(e);
        if (debug)
          log("map.get(" + key + ") = " + obj);
      if (obj == null) {
        resp.sendError(404, "Not here: " + e);
View Full Code Here

    if (maxKeysStr != null)
      maxKeys = Integer.parseInt(maxKeysStr);
    Writer w = new Writer();
    SortedMap<Entry, S3Object> submap = new TreeMap<Entry, S3Object>(map);
    if (prefix != null)
      submap = submap.tailMap(new Entry(prefix));
    int keyCount = 0;
    boolean truncated = false;
    String nextMarker = null;
    for (Entry e : submap.keySet()) {
      if (++keyCount > maxKeys) {
View Full Code Here

    log("doPut " + uri);
    if ("/".equals(uri.getPath())) {
      log("create bucket");
      bucket = true;
    } else {
      Entry e = new Entry(key(uri));
      e.setLastModified(new Date());
      e.setSize(req.getContentLength());
      e.setOwner(new Owner("id", "name"));
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      ServletInputStream is = req.getInputStream();
      byte b[] = new byte[128];
      while (true) {
        int len = is.read(b);
View Full Code Here

                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry outputEntry = new Entry();
                                outputEntry.setKey(ACTUAL_RESULT);
                                outputEntry.setValue(testRecord.get(ACTUAL_RESULT).toString());
                                outputData.getEntry().add(outputEntry);
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
View Full Code Here

                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry outputEntry = new Entry();
                                outputEntry.setKey(ACTUAL_RESULT);
                                outputEntry.setValue(testRecord.get(ACTUAL_RESULT).toString());
                                Entry durationEntry = new Entry();
                                durationEntry.setKey(DURATION);
                                durationEntry.setValue(testRecord.get(DURATION).toString());
                                outputData.getEntry().add(outputEntry);
                                outputData.getEntry().add(durationEntry);
                                if(testRecord.get(TEST_STATUS) != null){
                                    Entry statusEntry = new Entry();
                                    statusEntry.setKey(TEST_STATUS);
                                    statusEntry.setValue(testRecord.get(TEST_STATUS).toString());
                                    outputData.getEntry().add(statusEntry);
                                }
                               
                               
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
                        }
                        if (outputDataAdded) {
                            break;
                        }
                    }
                }else{
                    //Method did not return any data. So only write the duration as output
                    for (TestMethod testMethod : inputTestData.getTestMethod()) {
                        List<TestRecord> originalTestRecords = testMethod.getTestRecord();
                        for (TestRecord originalTestRecord : originalTestRecords) {
                            if (originalTestRecord.getId().equals(testRecord.get(RECORD_POSITION))) {
                                OutputData outputData = new OutputData();
                                Entry durationEntry = new Entry();
                                durationEntry.setKey(DURATION);
                                durationEntry.setValue(testRecord.get(DURATION).toString());
                                outputData.getEntry().add(durationEntry);
                                originalTestRecord.setOutputData(outputData);
                                outputDataAdded = true;
                                break;
                            }
View Full Code Here

TOP

Related Classes of jcifs.dcerpc.ndr.NdrBuffer$Entry

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.