ExtendScript filesystem access breaks mysteriously

Hi,
I am experiencing mysterious issue with ExtendScript filesystem access. I have two ExtendScript functions which I am calling from my Illustrator html5 panel:
function p1_open(path) {
     app.open(new File(path));
function p1_openAsLayer(name, path) {
     var result = '';
     var doc = app.activeDocument;
     var layer = doc.layers.add();
     layer.name = name;
     var placedItem = layer.placedItems.add();
     try {
          placedItem.file = new File(path);
          placedItem.embed();
     } catch (e) {
          layer.remove();
          result = e;
     return result;
The first one works every time. The second one seems to "break" randomly - the result I get back when calling that function using CSInterface.evalScript is "ExtendScript error", and then it stays broken until I restart my computer (OS X Maverics, and I got report about it happening on other OS X computers).
This happens on all apps I am testing: Illustrator CC, Illustrator CC 2014, Photoshop CC and Phoshop CC 2014 (the Photoshop version has its own openAsLayer function, but it fails as well). When it gets to "broken" state, it is broken globally for all applications, including when I run scripts directly from ExtendScript Toolkit without being in any application scope.
It happens seemingly randomly, sometimes it works for days, sometimes it breaks soon after computer restart. I can easily detect when the app is in this "broken" state by trying to create File or Folder object for something which I am sure it exists - the "exists" property will be false. For example, when running this from ExtendScript Toolkit:
var f = new Folder("/Users/jan/Application Support/Adobe/CEP/extensions/ob-devel"); // the extension dir, it exists for sure
f.exists; // -> false
var f = new Folder("/Users/jan"); // my home folder, that one definitely exists :)
f.exists; // -> false
var f = new Folder("/Users"); // interestingly, this one stays correct, same for "/"
f.exists; // -> true
Any idea what might be causing this really mysterious issue? Or what could I do to track it down?
If you want to look at the extension causing the problems its here: https://www.dropbox.com/s/ugwm5lnrtdyqqms/openbrand-0.0.59-cc2014.zxp

This is random, but probably worth trying...putting the function inside of an object?
$.p1 = {
      _openAsLayer : function (name, path) {
     var result = '';
     var doc = app.activeDocument;
     var layer = doc.layers.add();
     layer.name = name;
     var placedItem = layer.placedItems.add();
     try {
          placedItem.file = new File(path);
          placedItem.embed();
     } catch (e) {
          layer.remove();
          result = e;
     return result;

Similar Messages

  • Filesystem access with signed applet?

    Is signing an applet enough to read-access the client filesystem?
    I found webpages that said, signing the applet is sufficient while other webpages say you still need policy-files.

    Hello, there is more suitable solution for webpage application then is JFileUpload. Here, watch this video on youtube: http://www.youtube.com/watch?v=wqpwyAAhKGg . Java Applet is hidden controlled by JavaScript!

  • Ask user filesystem access permission only when necessary

    Hello
    Sorry I can't find an explicit title.
    I try to remove my applet signature to avoid the startup security dialog which is not user-friendly.
    But my applet offers the possiblity to save something on the user file system that can't be done without signed applet.
    Is there a way to ask the file system access permission just when it is mandatory, like the PrintUtilities.print() does?
    Thanks you in advance

    Hi ,
    Thanks for you reply.
    I will try this out and will let you know the results.
    Are you talking about "setting default home page" for the user ,in your last line of reply ?
    I think , this is the case when user clicks on Home link then this default page will be rendered. Am i right ?
    Is there any docs which can tell all about the Access Privileges and also tells about how to play with Role Based Security in Oracle Portal Server ?
    Thanks Again
    <Neeraj Sidhaye/>
    Try_Catch_Finally AT YAHOO DOT COM
    http://ExtremePortal.blog.co.uk

  • Accessing IFS from Solaris

    It seems strange to me but it appears the only systems you can't access iFS is unix filesystems.
    Its seems strange to me that I can't access an iFS database from a unix machine.... Is this the case? BTW> I need filesystem access, not ftp/web/etc.
    Thanks.

    <BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Alan (Oracle):
    IFS does not currently support NFS (which is the native Unix file system protocol).
    This is an important future direction for us.<HR></BLOCKQUOTE>
    Any idea which release this will be in?
    null

  • HOW TO Developing an Authorization plug-in

    #if defined (_WIN32)
    #pragma warning(disable : 4996)
    BOOL WINAPI DllMain(
        HINSTANCE hinstDLL,  // handle to DLL module
        DWORD fdwReason,     // reason for calling function
        LPVOID lpReserved )  // reserved
    return TRUE;
    #endif
    How to create here
    /*----------------------------------------------------------------------------+
    |       ___     _       _                                                    |
    |      /   |   | |     | |                                                   |
    |     / /| | __| | ___ | |__   ___                                           |
    |    / /_| |/ _  |/ _ \|  _ \ / _ \                                          |
    |   / ___  | (_| | (_) | |_) |  __/                                          |
    |  /_/   |_|\__,_|\___/|____/ \___|                                          |
    |                                                                            |
    |                                                                            |
    |  ADOBE CONFIDENTIAL                                                        |
    |  __________________                                                        |
    |                                                                            |
    |  Copyright (c) 2003 - 2010, Adobe Systems Incorporated.                    |
    |  All rights reserved.                                                      |
    |                                                                            |
    |  NOTICE:  All information contained herein is, and remains the property    |
    |  of Adobe Systems Incorporated and its suppliers, if any. The intellectual |
    |  and technical concepts contained herein are proprietary to Adobe Systems  |
    |  Incorporated and its suppliers and may be covered by U.S. and Foreign     |
    |  Patents, patents in process, and are protected by trade secret or         |
    |  copyright law. Dissemination of this information or reproduction of this  |
    |  material is strictly forbidden unless prior written permission is         |
    |  obtained from Adobe Systems Incorporated.                                 |
    |                                                                            |
    |          Adobe Systems Incorporated       415.832.2000                     |
    |          601 Townsend Street              415.832.2020 fax                 |
    |          San Francisco, CA 94103                                           |
    |                                                                            |
    +----------------------------------------------------------------------------*/
    #include "StdAfx.h"
    #include "FmsAuthAdaptor.h"
    #include "FmsAuthActions.h"
    #include "FmsMedia.h"
    #include <stdio.h>
    #include <fcntl.h>
    #include <string.h>
    #include "hash.h"
    #include <sstream>
    #if defined (_WIN32)
    #pragma warning(disable : 4996)
    BOOL WINAPI DllMain(
        HINSTANCE hinstDLL,  // handle to DLL module
        DWORD fdwReason,     // reason for calling function
        LPVOID lpReserved )  // reserved
    return TRUE;
    #endif
    // Flag to process SWF Verification in this auth sample.  A real SWF file
    // must be targeted in the SWFVerification code below for the example to work.
    static const bool kAuthorizeSwfVerification = false;
    class FmsAuthAdaptor : public IFmsAuthAdaptor
    public:
      FmsAuthAdaptor(IFmsAuthServerContext2* pFmsAuthServerContext)
       : m_pFmsAuthServerContext(pFmsAuthServerContext) {}
      virtual ~FmsAuthAdaptor() {}
      void authorize(IFmsAuthEvent* pAev);
      void notify(IFmsAuthEvent* pAev);
      void getEvents(I32 aevBitAuth[], I32 aevBitNotf[], unsigned int count);
    private:
      bool getStats(I64 clientStatsHandle, FmsClientStats& baseStats);
      void processStats(IFmsAuthEvent* pAev);
      IFmsAuthServerContext2* m_pFmsAuthServerContext;
    // Utils
    // Note: Do not delete the return value.  The return value is a buffer
    // allocated in FMS memory space, and FMS will manage the memory.
    static char* getStringField(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kString)
      return reinterpret_cast<char*>(field.str);
    return 0;
    // Note: Do not delete the return value.  The return value is a buffer
    // allocated in FMS memory space, and FMS will manage the memory.
    static U8* getBufferField(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kBuffer)
      return field.buf;
    return 0;
    static bool getI8Field(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I8& iValue)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kI8)
      iValue = field.i8;
      return true;
    return false;
    static bool getI32Field(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I32& iValue)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kI32)
      iValue = field.i32;
      return true;
    return false;
    static bool getI64Field(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I64& iValue)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kI64)
      iValue = field.i64;
      return true;
    return false;
    static bool getFloatField(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, float& fValue)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kFloat)
      fValue = field.f;
      return true;
    return false;
    static bool getU16Field(const IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, U16& iValue)
    FmsVariant field;
    if (pEv->getField(prop, field) == IFmsAuthEvent::S_SUCCESS && field.type == field.kU16)
      iValue = field.u16;
      return true;
    return false;
    static bool setStringField(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, char* pValue)
    FmsVariant field;
    field.setString(reinterpret_cast<I8*>(pValue));
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool setI8Field(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I8 iValue)
    FmsVariant field;
    field.setI8(iValue);
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool setU8Field(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, U8 iValue)
    FmsVariant field;
    field.setU8(iValue);
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool setI32Field(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I32 iValue)
    FmsVariant field;
    field.setI32(iValue);
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool setI64Field(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, I64 iValue)
    FmsVariant field;
    field.setI64(iValue);
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool setFloatField(IFmsAuthEvent* pEv, IFmsAuthEvent::Field prop, float fValue)
    FmsVariant field;
    field.setFloat(fValue);
    return pEv->setField(prop, field) == IFmsAuthEvent::S_SUCCESS;
    static bool isADPCMSupported(int iAudioCodecs)
    return (iAudioCodecs & SUPPORT_SND_ADPCM) != 0;
    static bool isVP6Supported(int iVideoCodecs)
    int iAllVP6 = ( SUPPORT_VID_VP6ALPHA | SUPPORT_VID_VP6 );
    return (iVideoCodecs & iAllVP6) != 0;
    static bool isService(int iType)
    return (iType & TYPE_SERVICE) != 0;
    static bool isAMF3(unsigned char uEncod)
    return (uEncod == ENCODE_AMF3);
    // This class will process all authorization events
    class MyFmsAuthorizeEvent
    public:
    MyFmsAuthorizeEvent(IFmsAuthEvent* pAev, IFmsAuthServerContext2* pFmsAuthServerContext)
      : m_pAev(pAev), m_pFmsAuthServerContext(pFmsAuthServerContext) {}
    virtual ~MyFmsAuthorizeEvent() {}
    void authorize();
    private:
    IFmsAuthEvent*   m_pAev;
    IFmsAuthServerContext2* m_pFmsAuthServerContext;
    void MyFmsAuthorizeEvent::authorize()
    bool bAuthorized = true;  // default authorization state
    switch(m_pAev->getType())
      case IFmsAuthEvent::E_CONNECT:
       // only E_CONNECT allows changes to the following fields:
       // F_CLIENT_AUDIO_SAMPLE_ACCESS
       // F_CLIENT_AUDIO_SAMPLE_ACCESS_LOCK
       // F_CLIENT_READ_ACCESS
       // F_CLIENT_READ_ACCESS_LOCK
       // F_CLIENT_VIDEO_SAMPLE_ACCESS
       // F_CLIENT_VIDEO_SAMPLE_ACCESS_LOCK
       // F_CLIENT_WRITE_ACCESS_LOCK
       // F_CLIENT_WRITE_ACCESS
       I8 iValue;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS, iValue))
        setI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS, iValue);
       // redirect connection example
       char* pUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI);
       if (pUri && !strcmp(pUri, "rtmp://localhost/streamtest"))
        setStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REDIRECT_URI,
         "rtmp://localhost:1935/streamtest");
        bAuthorized = false;
       // set DiffServ fields based on a client IP
       // char* pIp = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_IP);
       // if (pIp && !strcmp(pIp, "192.168.1.1"))
        // set the DSCP bits and mask
        U8 m_diffServBits = 170;
        U8 m_diffServMask = 252;
        setU8Field(m_pAev, IFmsAuthEvent::F_CLIENT_DIFFSERV_BITS, m_diffServBits);
        setU8Field(m_pAev, IFmsAuthEvent::F_CLIENT_DIFFSERV_MASK, m_diffServMask);
        bAuthorized = true;
      break;
      case IFmsAuthEvent::E_PLAY:
       char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
       if (pStreamName)
        setStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME, pStreamName);
       char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
       if (pStreamType)
        setStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE, pStreamType);
       char* pStreamQuery = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_QUERY);
       if (pStreamQuery)
        setStringField(m_pAev, IFmsAuthEvent::F_STREAM_QUERY, pStreamQuery);
       I8 iValue;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_RESET, iValue))
        // If iValue is 1 (true) the playlist will be reset and the
        // stream will be the only stream in the playlist; otherwise
        // 0 (false) means the stream will be added to the existing
        // playlist.
        setI8Field(m_pAev, IFmsAuthEvent::F_STREAM_RESET, iValue);
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_IGNORE, iValue))
        // If iValue is 1 (true) the stream timestamps will be ignored;
        // otherwise 0 (false) means the timestamps will be handled.
        setI8Field(m_pAev, IFmsAuthEvent::F_STREAM_IGNORE, iValue);
       char* pStreamTransition = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TRANSITION);
       if (pStreamTransition && strlen(pStreamTransition))
        // MBR transition example
        if (!strcmp(pStreamTransition, "switch") ||
         !strcmp(pStreamTransition, "swap"))
         // get the old stream's properties
         char* pOldStreamName = getStringField(m_pAev, IFmsAuthEvent::F_OLD_STREAM_NAME);
         char* pOldStreamType = getStringField(m_pAev, IFmsAuthEvent::F_OLD_STREAM_TYPE);
         char* pOldStreamQuery = getStringField(m_pAev, IFmsAuthEvent::F_OLD_STREAM_QUERY);
         // if pOldStream is empty (optional for switch) current stream is in play
         // do we really want stream transition? 
          // no we do not allow transition
          // bAuthorized = false;
          // now transition will be turned off and old stream continue playing
          // break;    
         // doing nothing will execute transition mode as is
         // or you could modify transition by changing transition properties
         // set it to 1 to indicate they will be hooking up the stream,
         // but that it does not currently exist
         setI32Field(m_pAev, IFmsAuthEvent::F_STREAM_LIVE_PUBLISH_PENDING, 1);
        // get the offset value if transition is set to offset mode for reconnect
        if (!strcmp(pStreamTransition, "resume"))
         float fValue;
         if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_OFFSET, fValue))
          float offset = fValue; //offset value in seconds
       else
        // This is a regular play waiting for approval, which may be converted
        // into a play2 command by changing transition properties
      break;
      case IFmsAuthEvent::E_PUBLISH:
       char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
       if (pStreamName)
        setStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME, pStreamName);
       char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
       if (pStreamType)
        setStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE, pStreamType);
       I32 iValue;
       if (getI32Field(m_pAev, IFmsAuthEvent::F_STREAM_PUBLISH_TYPE, iValue))
        // publish types:
        // 0 : record
        // 1 : append
        // 2 : appendWithGap
        // -1 : live
        setI32Field(m_pAev, IFmsAuthEvent::F_STREAM_PUBLISH_TYPE, iValue);
      break;
      case IFmsAuthEvent::E_FILENAME_TRANSFORM:
        I64 iValue;
        if (getI64Field(m_pAev, IFmsAuthEvent::F_CLIENT_ID, iValue))
         // some fields are not eligible to be modified. The return
         // value will be false when trying to modify the F_CLIENT_ID.
         bool bSet = setI64Field(m_pAev, IFmsAuthEvent::F_CLIENT_ID, iValue);
        char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
        if (pStreamName)
         // some fields are not eligible to be modified. The return
         // value will be false when trying to modify the F_STREAM_NAME.
         bool bSet = setStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME, pStreamName);
        char* pStreamPath = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_PATH);
        if (pStreamPath)
         setStringField(m_pAev, IFmsAuthEvent::F_STREAM_PATH, pStreamPath);
        char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
        if (pStreamType)
         setStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE, pStreamType); 
      break;
      case IFmsAuthEvent::E_PAUSE:
       bAuthorized = false; // block all E_PAUSE events.
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_PAUSE_TIME, fValue))
        float fPauseTime = fValue; // in seconds
       I8 iValue;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_PAUSE, iValue))
        // 1 (true) means PAUSE
        // 0 (false) means UNPAUSE
        bool boolPause = iValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_PAUSE_TOGGLE, iValue))
        // 1 (true) means PAUSE_TOGGLE
        // 0 (false) means no PAUSE_TOGGLE was set
        bool boolPauseToggle = iValue != 0;
       FmsVariant field;
       // Notify Action example: An IFmsNofifyAction is created to notify
       // server side action script (SSAS) of the E_PAUSE event by calling
       // the function name "method" in the script.  In this example two
       // variables will be passed to "method" by calling addParam(field)
       // on the action.
       if (m_pAev->getField(IFmsAuthEvent::F_CLIENT_ID, field) == IFmsAuthEvent::S_SUCCESS)
        I64 clientId = field.i64;
        IFmsNotifyAction* pAction = m_pAev->addNotifyAction("Notified by adaptor");
        pAction->setClientId(field);
        const char mtd[] = "method";
        field.setString(reinterpret_cast<I8*>(const_cast<char*>(mtd)));
        pAction->setMethodName(field);
        // create and insert a U16 "12345" as the first parameter
        field.setU16(12345);
        pAction->addParam(field);
        // create and insert clientId as a double as the second parameter
        field.setDouble((double)clientId);
        pAction->addParam(field);
        // Note: SSAS does not work with I64 or Buffer variants
        // field.setI64(clientId);
        // pAction->addParam(field); // incorrect
      break;
      case IFmsAuthEvent::E_SEEK:
       bAuthorized = false; // block all E_SEEK events
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_SEEK_POSITION, fValue))
        // Modification of the seek position example:
        // fValue + 3; will add 3 seconds to the initial seek posistion
        float fSeekTime = fValue; // value in seconds
        setFloatField(m_pAev, IFmsAuthEvent::F_STREAM_SEEK_POSITION, fSeekTime);
      break;
      case IFmsAuthEvent::E_LOADSEGMENT:
       // bAuthorized = false; // block all E_LOADSEGMENT events
       // E_LOADSEGMENT is a read only event that substitutes E_PLAY on
       // FMS Origin servers for recorded streams.
       I64 iValue;
       if (getI64Field(m_pAev, IFmsAuthEvent::F_SEGMENT_START, iValue))
        I64 iStart = iValue; // in bytes
       if (getI64Field(m_pAev, IFmsAuthEvent::F_SEGMENT_END, iValue))
        I64 iEnd = iValue; // in bytes
      break;
      case IFmsAuthEvent::E_RECORD:
       // bAuthorized = false; // block all E_RECORD events
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXSIZE, fValue))
        float recMaxSize = fValue; // in kilobytes
        setFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXSIZE, recMaxSize);
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXDURATION, fValue))
        float recMaxDuration = fValue; // in seconds
        setFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXDURATION, recMaxDuration);
      break;
      case IFmsAuthEvent::E_SWF_VERIFY:
       // SWF Verification example:
       // kAuthorizeSwfVerification is assigned false by default.  The
       // target SWF file must be updated for this to work.
       if(kAuthorizeSwfVerification)
        I8 swfvVersion = 0;
        if(getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_VERSION, swfvVersion))
         std::stringstream stream;
         stream << "Swf verification version is " << static_cast<int>(swfvVersion);
         m_pFmsAuthServerContext->log(stream.str().c_str(), IFmsServerContext::kInformation, false);
        I64 swfvDepth;
        if(getI64Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_DEPTH, swfvDepth))
         I32 swfvTTL;
         if(getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_TTL, swfvTTL))
          swfvTTL /= 2;
          setI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_TTL, swfvTTL);
         U8 digest[kSHA256DigestLen];
         // Target a real SWF file instead of sample.swf
         hashSwfFileAtDepth("C:\\sample.swf", swfvDepth, digest);
         FmsVariant field;
         field.setBuffer(digest, kSHA256DigestLen);
         m_pAev->setField(IFmsAuthEvent::F_CLIENT_SWFV_DIGEST, field);
      break;
      case IFmsAuthEvent::E_APPSTART:
      case IFmsAuthEvent::E_APPSTOP:
      case IFmsAuthEvent::E_DISCONNECT:
      case IFmsAuthEvent::E_STOP:
      case IFmsAuthEvent::E_UNPUBLISH:
      case IFmsAuthEvent::E_ACTION:
      case IFmsAuthEvent::E_CODEC_CHANGE:
      case IFmsAuthEvent::E_RECORD_STOP:
      case IFmsAuthEvent::E_CLIENT_PAUSE:
      case IFmsAuthEvent::E_SWF_VERIFY_COMPLETE:
      case IFmsAuthEvent::E_CLIENT_SEEK:
      case IFmsAuthEvent::E_START_TRANSMIT:
      case IFmsAuthEvent::E_STOP_TRANSMIT:
      case IFmsAuthEvent::E_MAXEVENT:
      break;
    IFmsAuthServerContext2::AuthFailureDesc* desc = NULL;
    if(!bAuthorized)
      desc = new IFmsAuthServerContext2::AuthFailureDesc("Blocked by auth adaptor",
       IFmsAuthServerContext2::kDefaultStatus, -1);
    char buf[1024];
    const char* const action = bAuthorized ? "approved" : "rejected";
    sprintf(buf, "Received authorization type=%d id=%p %s\n", m_pAev->getType(),
      m_pAev, action);
    // log to the configured FMS log directory. If the third parameter is true,
    // also send the log to the system event log.
    m_pFmsAuthServerContext->log(buf, IFmsServerContext::kInformation, false);
    m_pFmsAuthServerContext->onAuthorize(m_pAev, bAuthorized, desc);
    delete desc;
    class MyFmsNotifyEvent
    public:
      MyFmsNotifyEvent(IFmsAuthEvent* pAev, IFmsAuthServerContext2* pFmsAuthServerContext)
       : m_pAev(pAev), m_pFmsAuthServerContext(pFmsAuthServerContext) {}
      virtual ~MyFmsNotifyEvent() {}
      void notify() const;
    private:
      IFmsAuthEvent* m_pAev;
      IFmsAuthServerContext2* m_pFmsAuthServerContext;
    void MyFmsNotifyEvent::notify() const
    switch(m_pAev->getType())
      case IFmsAuthEvent::E_PLAY:
       char* pAppName = getStringField(m_pAev, IFmsAuthEvent::F_APP_NAME);
       char* pAppInst = getStringField(m_pAev, IFmsAuthEvent::F_APP_INST);
       char* pAppUri = getStringField(m_pAev, IFmsAuthEvent::F_APP_URI);
       char* pClIp = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_IP);
       char* pClUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI);
       char* pClNewUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REDIRECT_URI);
       char* pClVhost = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VHOST);
       char* pClRef = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REFERRER);
       char* pClPurl = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PAGE_URL);
       char* pClAgent = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_USER_AGENT);
       char* pClRAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_READ_ACCESS);
       char* pClWAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS);
       char* pClAudioAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_AUDIO_SAMPLE_ACCESS);
       char* pClVideoAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VIDEO_SAMPLE_ACCESS);
       char* pClProto = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PROTO);
       char* pClUstem = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI_STEM);
       char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
       char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
       char* pStreamQuery = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_QUERY);
       char* pStreamPath = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_PATH);
       I32 iValue;
       if (getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_AUDIO_CODECS, iValue))
        bool bADPCM = isADPCMSupported(iValue);
       if (getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_VIDEO_CODECS, iValue))
        bool bVP6 = isVP6Supported(iValue);
       if (getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_TYPE, iValue))
        bool bService = isService(iValue);
       if (getI32Field(m_pAev, IFmsAuthEvent::F_STREAM_ID, iValue))
        I32 iStreamId = iValue;
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_LENGTH, fValue))
        float fLength = fValue; // in seconds
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_POSITION, fValue))
        float iPosition = fValue; // in seconds
       I64 lValue;
       if (getI64Field(m_pAev, IFmsAuthEvent::F_CLIENT_ID, lValue))
        I64 iClientId = lValue; 
       I8 sValue;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_SECURE, sValue))
        bool bSecure = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_AMF_ENCODING, sValue))
        bool bAMF3 = isAMF3(sValue);
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_READ_ACCESS_LOCK, sValue))
        bool bRead = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS_LOCK, sValue))
        bool bWrite = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_AUDIO_SAMPLE_ACCESS_LOCK, sValue))
        bool bAudioRead = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_VIDEO_SAMPLE_ACCESS_LOCK, sValue))
        bool bVideoRead = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_RESET, sValue))
        bool bReset = sValue != 0;
       if (getI8Field(m_pAev, IFmsAuthEvent::F_STREAM_IGNORE, sValue))
        bool bIgnore = sValue != 0;
      break;
      case IFmsAuthEvent::E_SEEK:
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_SEEK_POSITION, fValue))
        float fSeekTime = fValue;
       // Disconnect Action example: disconnect the client that was
       // specified by the E_SEEK notify event
       FmsVariant field;
       if (m_pAev->getField(IFmsAuthEvent::F_CLIENT_ID, field) == IFmsAuthEvent::S_SUCCESS)
        IFmsDisconnectAction* pAction =
         const_cast<IFmsAuthEvent*>(m_pAev)->
          addDisconnectAction("Seek is not allowed. Blocked by adaptor");
        pAction->setClientId(field);
      break;
      case IFmsAuthEvent::E_CODEC_CHANGE:
       char* pAppName = getStringField(m_pAev, IFmsAuthEvent::F_APP_NAME);
       char* pAppInst = getStringField(m_pAev, IFmsAuthEvent::F_APP_INST);
       char* pAppUri = getStringField(m_pAev, IFmsAuthEvent::F_APP_URI);
       char* pClIp = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_IP);
       char* pClUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI);
       char* pClNewUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REDIRECT_URI);
       char* pClVhost = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VHOST);
       char* pClRef = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REFERRER);
       char* pClPurl = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PAGE_URL);
       char* pClAgent = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_USER_AGENT);
       char* pClRAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_READ_ACCESS);
       char* pClWAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS);
       char* pClAudioAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_AUDIO_SAMPLE_ACCESS);
       char* pClVideoAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VIDEO_SAMPLE_ACCESS);
       char* pClProto = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PROTO);
       char* pClUstem = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI_STEM);
       char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
       char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
       char* pStreamQuery = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_QUERY);
       char* pStreamPath = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_PATH);
       U16 fType;
       if (getU16Field(m_pAev, IFmsAuthEvent::F_STREAM_CODEC_TYPE, fType))
        U16 streamCodecType = fType;
        if (streamCodecType == kVIDEO_CODEC)
         U16 fValue;
         if (getU16Field(m_pAev, IFmsAuthEvent::F_STREAM_CODEC, fValue))
          U16 streamCodecValue = fValue;
          if (streamCodecValue == VIDEO_CODEC_SORENSON)
           // Disconnect Action example: Disallow clients trying
           // to publish content with the sorenson video codec.
           FmsVariant field;
           if (m_pAev->getField(IFmsAuthEvent::F_CLIENT_ID, field) == IFmsAuthEvent::S_SUCCESS)
            IFmsDisconnectAction* pAction =
             const_cast<IFmsAuthEvent*>(m_pAev)->
             addDisconnectAction("Sorenson is not allowed. Blocked by adaptor");
            pAction->setClientId(field);
      break;
      case IFmsAuthEvent::E_RECORD_STOP:
       char* pAppName = getStringField(m_pAev, IFmsAuthEvent::F_APP_NAME);
       char* pAppInst = getStringField(m_pAev, IFmsAuthEvent::F_APP_INST);
       char* pAppUri = getStringField(m_pAev, IFmsAuthEvent::F_APP_URI);
       char* pClIp = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_IP);
       char* pClUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI);
       char* pClNewUri = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REDIRECT_URI);
       char* pClVhost = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VHOST);
       char* pClRef = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_REFERRER);
       char* pClPurl = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PAGE_URL);
       char* pClAgent = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_USER_AGENT);
       char* pClRAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_READ_ACCESS);
       char* pClWAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_WRITE_ACCESS);
       char* pClAudioAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_AUDIO_SAMPLE_ACCESS);
       char* pClVideoAccess = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_VIDEO_SAMPLE_ACCESS);
       char* pClProto = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_PROTO);
       char* pClUstem = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_URI_STEM);
       char* pStreamName = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_NAME);
       char* pStreamType = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_TYPE);
       char* pStreamQuery = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_QUERY);
       char* pStreamPath = getStringField(m_pAev, IFmsAuthEvent::F_STREAM_PATH);
       float fValue;
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXSIZE, fValue))
        float recMaxSize = fValue; // in kilobytes
       if (getFloatField(m_pAev, IFmsAuthEvent::F_STREAM_RECORD_MAXDURATION, fValue))
        float recMaxDuration = fValue; // in seconds
      break;
      case IFmsAuthEvent::E_SWF_VERIFY_COMPLETE:
       char* pClIp = getStringField(m_pAev, IFmsAuthEvent::F_CLIENT_IP);
       I8 version; // version of SWF verification
       getI8Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_VERSION, version);
       I64 depth; // depth in the SWF file hashed
       getI64Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_DEPTH, depth);
       I32 ttl; // time to live of the SWF hash provided
       getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_TTL, ttl);
       // digest provided to match against
       U8* buffer = getBufferField(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_DIGEST);
       // result of the attempted match-- see FmsAuthEvents.h enum
       // eSWFMatch for the meaning of this field
       I32 match;
       getI32Field(m_pAev, IFmsAuthEvent::F_CLIENT_SWFV_RESULT, match);
       std::stringstream stream;
       stream << "swf verification for client: "
         << std::string(pClIp)
         << " is complete, the result is: " << match;
       m_pFmsAuthServerContext->log(stream.str().c_str(), IFmsServerContext::kInformation, false);
      break;
      case IFmsAuthEvent::E_APPSTART:
      case IFmsAuthEvent::E_APPSTOP:
      case IFmsAuthEvent::E_CONNECT:
      case IFmsAuthEvent::E_DISCONNECT:
      case IFmsAuthEvent::E_FILENAME_TRANSFORM:
      case IFmsAuthEvent::E_STOP:
      case IFmsAuthEvent::E_PAUSE:
      case IFmsAuthEvent::E_PUBLISH:
      case IFmsAuthEvent::E_UNPUBLISH:
      case IFmsAuthEvent::E_LOADSEGMENT:
      case IFmsAuthEvent::E_ACTION:
      case IFmsAuthEvent::E_RECORD:
      case IFmsAuthEvent::E_CLIENT_PAUSE:
      case IFmsAuthEvent::E_SWF_VERIFY:
      case IFmsAuthEvent::E_CLIENT_SEEK:
      case IFmsAuthEvent::E_START_TRANSMIT:
      case IFmsAuthEvent::E_STOP_TRANSMIT:
      case IFmsAuthEvent::E_MAXEVENT:
      break;
    char buf[1024];
    sprintf(buf, "Received notification type=%d id=%p\n", m_pAev->getType(), m_pAev);
    // log to the configured FMS log directory. If the third parameter is true,
    // also send the log to the system event log.
    m_pFmsAuthServerContext->log(buf, IFmsServerContext::kInformation, false);
    m_pFmsAuthServerContext->onNotify(m_pAev);
    /* All authorization events flow through this wrapper function.
    * Note: This sample auth adaptor has MyFmsAppAuthEvent allocated on the
    * stack, but time intensive implementations may warrant authorization to
    * be allocated on the heap so work may be passed to a thread pool.  This
    * prevents starvation of the calling FMS threads in custom code that may
    * have processing delays (ie database calls, network filesystem access, etc..).
    void FmsAuthAdaptor::authorize(IFmsAuthEvent* pAev)
      MyFmsAuthorizeEvent(pAev, m_pFmsAuthServerContext).authorize();
    /* All notification events flow through this wrapper function.
    * Note: This sample auth adaptor has MyFmsNotifyEvent allocated on the
    * stack, but time intensive implementations may warrant notifications to
    * be allocated on the heap so work may be passed to a thread pool.  This
    * prevents starvation of the calling FMS threads in custom code that may
    * have processing delays (ie database calls, network filesystem access, etc..).
    void FmsAuthAdaptor::notify(IFmsAuthEvent* pAev)
      processStats(pAev);
      MyFmsNotifyEvent(pAev, m_pFmsAuthServerContext).notify();
    * Get client statistics.
    bool FmsAuthAdaptor::getStats(I64 clientStatsHandle, FmsClientStats& baseStats)
    bool bValue= m_pFmsAuthServerContext->getClientStats(clientStatsHandle, baseStats);
    return bValue;
    * Example obtainting client stats from an E_CONNECT or E_STOP event
    void FmsAuthAdaptor::processStats(IFmsAuthEvent* pAev)
      I64 statsHandle;
      FmsClientStats baseStats;
      if (!getI64Field(pAev, IFmsAuthEvent::F_CLIENT_STATS_HANDLE, statsHandle))
       return;
      char* pAppName = getStringField(pAev, IFmsAuthEvent::F_APP_NAME);
      if (pAev->getType() == IFmsAuthEvent::E_CONNECT)
       getStats(statsHandle, baseStats);
       // log data
       char buf[1024];
       char hashKey[9];
       memset(hashKey, 0, 9);
       memcpy(hashKey, &statsHandle, sizeof(statsHandle));
       sprintf(buf, "client Stats Handle= %s, bytes_in= %f, bytes_out= %f\n", hashKey,
        static_cast<double>(baseStats.bytes_in), static_cast<double>(baseStats.bytes_out));
       m_pFmsAuthServerContext->log(buf, IFmsServerContext::kInformation, false);
      else if (pAev->getType() == IFmsAuthEvent::E_STOP)
       getStats(statsHandle, baseStats);
    /* By default, all authorization and notifications events will be sent.
    * Call excludeEvents with the bit set to 1, to stop recieving events.
    * Note: The events:
    * E_APPSTART, E_APPSTOP, E_DISCONNECT, E_STOP, E_UNPUBLISH, E_CODEC_CHANGE
    * are excluded by default and are not authorizable.
    void FmsAuthAdaptor::getEvents(I32 aevBitAuth[], I32 aevBitNotf[], unsigned int count)
    // exclude certain auth events
    IFmsAuthEvent::EventType authExcludeEvent[] = { IFmsAuthEvent::E_SEEK };
    // set E_SEEK to a non authorizable event
    m_pFmsAuthServerContext->excludeEvents(aevBitAuth, count, authExcludeEvent, 1);
    // Warning: if E_CODEC_CHANGE event is not excluded, all messages will be
    // scanned to detect codec change. Subscribe to this event only as needed.
    // Example that excludes certain notify events. (E_PAUSE, E_CODEC_CHANGE)
    IFmsAuthEvent::EventType notifyExcludeEvent[] =
      { IFmsAuthEvent::E_PAUSE, IFmsAuthEvent::E_CODEC_CHANGE };
    m_pFmsAuthServerContext->excludeEvents(aevBitNotf, count, notifyExcludeEvent, 2);
    extern "C" void FCExport FmsCreateAuthAdaptor3(IFmsAuthServerContext2* pAuthServerCtx,
                  IFmsAuthAdaptor*& pFmsAuthAdaptor, U32& iVersion)
    pFmsAuthAdaptor = new FmsAuthAdaptor(pAuthServerCtx);
    U32 version = pAuthServerCtx->getVersion();
    U16 w2 = LWORD(version);
    U16 w1 = HWORD(version);
    iVersion = MKLONG(INTERFACE_MINOR_VERSION, INTERFACE_MAJOR_VERSION);
    char buf[1024];
    char *ptr = buf;
    int valueLen = pAuthServerCtx->getConfig("UserKey1", &ptr, sizeof(buf));
    if (!valueLen)
      valueLen = pAuthServerCtx->getConfig("UserKey2", &ptr, sizeof(buf));
      if (!valueLen)
       return;
      if (valueLen < 0)
       // failed to find this key
       return;
    if (valueLen < 0)
      // failed to find this key
      return;
    // value length is bigger then the buffer size, and a real adaptor should
        // allocate valueLen + 1 bytes and call again
    extern "C" void FCExport FmsDestroyAuthAdaptor3(IFmsAuthAdaptor* pAuthAdaptor )
    delete pAuthAdaptor;

    There is no API to Acrobat's document compare feature.
    It is certainly possible for an experienced plug-in programmer to
    create a new compare plug-in. For example, extract text from two PDFs
    and compare it. Comparison algorithms have been much studied so should
    be findable in academic literature.
    Going beyond text comparison would be a major exercise.
    Aandi Inston

  • ActiveX object

    Is it possible to use an activeX object in aw rather than an
    activeX control
    I am trying to integrate a report writer into an aw program,
    but the
    suppliers have just informed me that it is NOT an activeX
    control, rather an
    activeX object.
    Unfortunately not something I am familiar with.
    Thanks for any help

    I don't know VB script but do know that it is similar to
    Authorware in
    the way it can load ActiveX controls and the like. Often, the
    folks I
    work with, if asked to make something usually web-based work
    locally
    (commonly a Flash project), they'll embed it in VB to allow
    the same
    sort of local filesystem access I could achieve by doing the
    same thing
    in Authorware.
    So, perhaps the VB example they have would shed some light on
    the
    approach? Of course, if VB has a way to load these mysterious
    activeX
    objects which Authorware does not, well, there you go...
    Or, similarly, the 'online sample' on their site? If nothing
    else,
    perhaps that would show how to use this object in IE, which
    you could
    then embed into A'ware?
    I was under the same impression as the others. I don't
    understand what
    an ActiveX object is compared to a control. Simply a data
    file that some
    applications know how to run without the, um, .ocx wrapper?
    In that case, wouldn't it essentially be a .dll?
    Erik
    dave wrote:
    > This was also my understanding, that it meant the same
    thing, but there
    > seems to be no activeX (ocx) file.
    >
    > It's from a company called process academy
    > (
    http://www.processacademy.ca/default.aspx),
    they have report writing
    > software that you can embed in different technologies.
    Erik Lord
    http://www.capemedia.net
    Adobe Community Expert - Authorware
    http://www.adobe.com/communities/experts/
    http://www.awaretips.net -
    samples, tips, products, faqs, and links!
    *Search the A'ware newsgroup archives*
    http://groups.google.com/group/macromedia.authorware
    *The Blankenship Caveat: Note that direct linking to http
    content
    through any Authorware icon will likely fail if a proxy
    server is present!*

  • Could not open DVD with libdvdcss

    I installed vlc, xine-lib, xine-ui, mplayer, libdvdcss, libdvdnav, libdvdread.
    I also installed "codecs" with packer.
    I'm trying to play two different DVDs and the following is what I get (even putting the disk into /dev/sr0 or using another DVD won't change):
    $ vlc /dev/sr1
    VLC media player 2.1.5 Rincewind (revision 2.1.4-49-gdab6cb5)
    [0x95b1220] pulse audio output error: PulseAudio server connection failure: Connection refused
    [0x952a8f8] main libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden.
    libdvdnav: Using dvdnav version 4.2.1
    libdvdread: Could not open /dev/sr1 with libdvdcss.
    libdvdread: Can't open /dev/sr1 for reading
    libdvdnav: vm: failed to open/read the DVD
    [0xb20a5e48] filesystem access error: read error: Input/output error
    [0xb39a6e10] main stream error: cannot pre fill buffer
    libdvdnav: Using dvdnav version 4.2.1
    libdvdread: Could not open /dev/sr1 with libdvdcss.
    libdvdread: Can't open /dev/sr1 for reading
    libdvdnav: vm: failed to open/read the DVD
    libdvdread: Could not open /dev/sr1 with libdvdcss.
    libdvdread: Can't open /dev/sr1 for reading
    [0xb1abe3f8] dvdread demux error: DVDRead cannot open source: /dev/sr1
    [0xb5a03700] main input error: open of `dvd:///dev/sr1' failed
    $ mplayer /dev/sr1
    MPlayer SVN-r37224 (C) 2000-2014 MPlayer Team
    210 audio & 441 video codecs
    Playing /dev/sr1.
    File not found: '/dev/sr1'
    Failed to open /dev/sr1.
    Exiting... (End of file)
    $ xine /dev/sr1
    Dies ist xine (X11 gui) - Ein freier Video-Player v0.99.8-[DEBUG].
    (c) 2000-2010 The xine Team.
    videowin: display is using xinerama with 1 screens
    videowin: going to assume we are using the first screen.
    videowin: size of the first screen is 1024x768.
    videowin: Xinerama fullscreen parameters: X_origin=0 Y_origin=0 Width=1024 Height=768
    pixel_aspect: 0.997627
    Failed to open VDPAU backend libvdpau_nouveau_vieux.so: Kann die Shared-Object-Datei nicht öffnen: Datei oder Verzeichnis nicht gefunden
    vo_vdpau: Can't create vdp device : No vdpau implementation.
    xv_set_property: property=1, value=0
    xine: could not connect to socket
    xine: Datei oder Verzeichnis nicht gefunden
    this is my video card
    01:00.0 VGA compatible controller: NVIDIA Corporation NV11 [GeForce2 MX200] (rev b2) (prog-if 00 [VGA controller])
    Subsystem: CardExpert Technology Device 0001
    Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 16
    Memory at d6000000 (32-bit, non-prefetchable) [size=16M]
    Memory at d8000000 (32-bit, prefetchable) [size=128M]
    Expansion ROM at d7ff0000 [disabled] [size=64K]
    Capabilities: [60] Power Management version 2
    Capabilities: [44] AGP version 2.0
    Kernel driver in use: nouveau
    Kernel modules: nouveau
    these commands were asked me on freenode's #archlinux channel:
    $ stat /dev/sr0
    Datei: „/dev/sr0“
    Größe: 0 Blöcke: 0 EA Block: 4096 blockorientierte Spezialdatei
    Gerät: 5h/5d Inode: 6351 Verknüpfungen: 1 Gerätetyp: b,0
    Zugriff: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 93/ optical)
    Zugriff : 2014-07-12 22:52:20.959057344 +0200
    Modifiziert: 2014-07-12 22:52:20.959057344 +0200
    Geändert : 2014-07-12 22:52:20.959057344 +0200
    Geburt : -
    $ getfacl /dev/sr0
    # file: dev/sr0
    # owner: root
    # group: optical
    user::rw-
    user:christian:rw-
    group::rw-
    mask::rw-
    other::---
    $ loginctl show-session $XDG_SESSION_ID -p Active
    Active=yes
    I feel like some other driver is missing...
    Last edited by leonixyz (2014-07-12 21:58:01)

    dodo3773 wrote:Can you test a regular video file and it works fine in vlc?
    ok, one step toward the solution:
    I've scp-ed an .mp4 and an .mpg from my laptop, chmod 777 them and finally I can play them
    dodo3773 wrote:
    Also, do you get any output from this command?:
    dmesg | grep CD
    $ dmesg | grep CD
    [ 1.227637] scsi 0:0:0:0: CD-ROM HL-DT-ST CD-RW GCE-8320B 1.02 PQ: 0 ANSI: 5
    [ 1.238061] scsi 0:0:1:0: CD-ROM LG DVD-ROM DRD8160B 1.01 PQ: 0 ANSI: 5
    [ 1.458996] cdrom: Uniform CD-ROM driver Revision: 3.20
    [ 1.459461] sr 0:0:0:0: Attached scsi CD-ROM sr0
    [ 1.471069] sr 0:0:1:0: Attached scsi CD-ROM sr1
    [ 1286.396790] sr 0:0:1:0: [sr1] CDB:
    [ 1286.426850] sr 0:0:1:0: [sr1] CDB:
    $ pacman -Qi vlc
    Name : vlc
    Version : 2.1.5-1
    Beschreibung : A multi-platform MPEG, VCD/DVD, and DivX player
    Architektur : i686
    URL : http://www.videolan.org/vlc/
    Lizenzen : LGPL2.1 GPL2
    Gruppen : Nichts
    Stellt bereit : Nichts
    Hängt ab von : a52dec libdvbpsi libxpm libdca qt4 libproxy sdl_image libdvdnav libtiger
    lua libmatroska zvbi taglib libmpcdec ffmpeg faad2 libupnp libshout libmad
    libmpeg2 xcb-util-keysyms libtar libxinerama
    Optionale Abhängigkeiten: avahi: for service discovery using bonjour protocol[Installiert]
    libnotify: for notification plugin[Installiert]
    ncurses: for ncurses interface support[Installiert]
    libdvdcss: for decoding encrypted DVDs[Installiert]
    lirc-utils: for lirc plugin[Installiert]
    libavc1394: for devices using the 1394ta AV/C
    libdc1394: for IEEE 1394 plugin
    kdelibs: KDE Solid hardware integration
    libva-vdpau-driver: vdpau back-end for nvidia[Installiert]
    libva-intel-driver: back-end for intel cards
    libbluray: for Blu-Ray support[Installiert]
    flac: for Free Lossless Audio Codec plugin[Installiert]
    portaudio: for portaudio support
    twolame: for TwoLAME mpeg2 encoder plugin
    projectm: for ProjectM visualisation plugin
    libcaca: for colored ASCII art video output[Installiert]
    libgme: for libgme plugin
    librsvg: for SVG plugin[Installiert]
    gnome-vfs: for GNOME Virtual File System support
    libgoom2: for libgoom plugin
    vcdimager: navigate VCD with libvcdinfo
    aalib: for ASCII art plugin[Installiert]
    libmtp: for MTP devices support
    smbclient: for SMB access plugin[Installiert]
    libcdio: for audio CD playback support[Installiert]
    ttf-freefont: for subtitle font
    ttf-dejavu: for subtitle font
    opus: for opus support[Installiert]
    libssh2: for sftp support[Installiert]
    lua-socket: for http interface
    Benötigt von : Nichts
    Optional für: Nichts
    Konflikt mit : vlc-plugin
    Ersetzt : vlc-plugin
    Installationsgröße: 44319,00 KiB
    Packer : Giovanni Scafora <[email protected]>
    Erstellt am : Mi 09 Jul 2014 15:14:36 CEST
    Installiert am : Sa 12 Jul 2014 21:15:04 CEST
    Installationsgrund : Ausdrücklich installiert
    Installations-Skript : Ja
    Verifiziert durch: Signatur

  • How to view the content (contained objects) of transport files without importing?

    Hi,
    we do often receive transport files (DATA and CODILE) from third parties.
    If is is done correctly the supplier of the transport files devliver also additional information about the detailed content of the transport, e.g object lists as plain text file, so that we are informed which objekts will be imported in advance.
    But some suppliers don't. Or we want only check, if additional info and real transport content match.
    So for that reason  I am looking for a possible way to view the object list of such transports without adding it to the import queue or importing it to a sandbox system or even add it to the import buffer..
    Most likely this should be done by a standalone tool (on Windows) or a tool running on SAP accessing the transportfiles (preference: stored only on the client PC  and not added to the transport directory)
    So my question is: Is there any tool that can extract the object list from the transport files and display it?
    Helst regards
    Helmut Fischer

    Helmut,
    If you don't have access to the server console, it might be possible to 'trick' tp into working from a workstation, but I wouldn't bet on it. You'd have to fake up a profile for it. I haven't tried this.
    Peering into the contents of a delivered transport file would be something that your Basis team would typically do. My suggestion is to work with them, either to use tp command-line option from the server console, or if that's not reasonable, then yes, go ahead and add it to the import queue of one of your sandbox systems. You can always delete it from the queue again later. If you don't actually import it, it isn't going to hurt anything.
    To do any of these options is going to require some level of filesystem access to your transport host, as you need to copy the two files that make up the transport there. You need to put the 'K' file into \usr\sap\trans\cofiles and the 'R' file into \usr\sap\trans\data. Then, you can either use the tp command-line tool, or you can go into STMS, go into the import queue of any system in the transport domain (so a sandbox is fine), and use Extras... Other Requests... Add and type in the transport request ID. Yes, this adds some entries about the transport into a few tables, but it doesn't actually import the transport, and it doesn't change anything about your system. It just allows the transport to show up as importable in the queue, and that will make it so that you can read the object list of the transport. Then, if you decide not to import it, you can delete it from the queue, and your system is back to the way it was before. Also, doing this will not put the transport into any other system's queue. Even if you import the transport (into a sandbox system), it won't show up in any other system's queue until you forward it.
    Regards,
    Matt

  • Bluetooth problems all around - Modem in the first row.

    Hi there,
    I've got a really annoying problem with the Bluetooth Setup of my Mac. Like you can see in my system description, I use Mac OS X 10.5.6. For a long time I used my old mobile via Bluetooth and GPRS as a Modem. Now it was time for a change. I bought a new mobile which supports 3G (Nokia 5800 Xpress Music).
    I used the Bluetooth Wizard and told him to use all possible bluetooth functions of my device. I looked in the internet for the right configuration (APN, CID,...) and choosed to use the Nokia GPRS/3G Modem script which is preinstalled in Mac OS X (I also tried another one from www.taniwha.org.uk, it didn't work either).
    The very strange thing is, the first connection worked without any problem, but after disconnecting and reconnecting it didn't work anymore. Instead I've got a message that the RFCOMM-Channel can't be opened.
    I tried to fix the problem myself by searching wrong settings in some plists, but although I restored the original settings after recognizing that my changes didn't work, I've got a new problem.
    Now the status symbol of the bluetooth modem always shows up that no modem configuration could be found, although I can still try to connect via Network -> Bluetooth. Of course it doesn't work this way too.
    Sometimes the bluetooth modem works once after a reboot ( not after every reboot ). But only once!
    File Transfer always works! The Nokia Multimedia Transfer also always works.
    I definitely need advice of some of you, experts.
    I'd love to hear from you!

    Hi,
    sorry, but the problem isn't solved yet. I tried different things but nothing helped:
    I backuped and deleted the following Files:
    /Library/Preferences/SystemConfiguration/Preferences.plist
    /Library/Preferences/com.apple.Bluetooth.plist
    /Users/benutzername/Library/Preferences/ByHost/com.apple.BluetoothHASH.plist
    But it didn't help. In fact it made things worse. Therefore I restored the backuped files.
    I deleted all bluetooth devices and installed just my new phone a bunch of times. - No change at all.
    I used FSEventer to control the Filesystem Access. That leaded me only to the files mentioned above.
    In the log-file:
    /private/var/log/ppp.log
    is the following error message logged:
    Failed to open /dev/cu.Bluetooth-Modem: Resource busy
    Up until now, I don't understand why this resource is busy.
    I figured out, that the modem works using a USB-connection. That isn't a satisfying solution but it works for now.
    Nevertheless I am still really interested in resolving the Bluetooth problem.

  • RAM usage increases with time, problem?

    Hi all,
    Whislt I've been playing with linux on the side for a few years the past few weeks have been my first foray into using linux as my main OS, in the form of Arch. It's been a steep learning curve but I'm enjoying the experience and wealth of information. Previous flirts with Linux have been groping in the dark, pasting code from the internet and avoiding the terminal where possible.
    Since going Arch full time I've noticed the RAM usage seems to increase when I leave it alone for a few hours. I'm running an old, around 2005 I think, Advent Laptop with 512MB, or 466MB according to free -m, RAM. I've allocated 2GB to swap which it dips into occasionally.
    Typically I've been leaving open luakit & urxvt whislt running Awesome. If I leave it for a few hours and return the RAM has jumped from 30% or so to 80 or 90%. A reboot solves this.
    I had a look around the interwebs but this is the first time my wed-fu has not unearthed one of those wonderful arch articles/post on what to do.
    Any suggestions, or anything I can do to clarify the issue?

    It does indeed, but only while the system is being actively accessed, as far as I know. An idle system (i.e. with no filesystem access) will have a stagnant file cache.
    So I guess the question here would be, is your PC idle while you're "leaving" it? Do you use it as a fileserver, webserver, database, etc, or do you ssh in perform various tasks? Does 'free' report your free '-/+ buffers/cache' value as something minute?

  • Running reports stored in the database

    Hi guys,
    Is it possible to have Reports 6i produce reports that are
    stored in the database? Looking at the documentation, it would
    appear the report definition files (RDF) must be stored in the
    filesystem. I don't really want to be handing out filesystem
    access (managing and it) to people - is there a way around this?
    Thanks,
    denty.

    user5780461 wrote:
    Hi,
    Would anyone have any recommendations regrading running reports based on the data stored in an oracle database. We will soon go live with a project using an oracle DB. We do not wish to run reports directly from the production DB as it will impact performance. Have you actually measured the impact? If not, you are just making assumptions that -- lacking any other informatin -- appear to be invalid.
    Is there any recommended method/architecture for reporting suggested by oracle for this type of scenario?
    You make it sound like some unusual scenario. What you've described so far (running reports against an OLTP database) is just bread and butter operations for Oracle.
    One idea is too runs some scripts that will write the data to another database and from there we will runs out reporting queries. Are there any other potential solutions?
    And how does reading the data to insert into some other database cause less contention than reading data for a report?
    >
    Many thanks,
    Ro

  • My Mac Won't Sleep!!!

    And display keeps dipping to blue every so often.
    Display preferences shows a second display preferences window for a VGA monitor, even though I do not have any secondary monitor attached.I can't put my machine to sleep because it keeps dipping to blue as if it's trying to access this mystery display. When using, every three minutes or so will dip to same blue background and resume after a couple of seconds. Have reset pram, repaired disk permissions.
    iMac G5 (isight) OS X 10.4.11
    Any ideas?

    Did you restart your computer after repairing permissions?
    Try this:
    Change the energy saving options, to put the display to sleep and the computer to sleep at the same time.
    Enable (check mark) put the hard disk to sleep when possible.
    Lock the padlock.
    Optional: Repair permissions &/or restart.
    ==============
    Check your Energy Saver settings to make sure they are correct.
    See if you can put your computer to sleep w/your remote.
    See Knowledge Base Article http://docs.info.apple.com/article.html?artnum=301733 iMac G5: How to Reset the SMU (iMac G5, the iMac G5 (Ambient Light Sensor), and the iMac G5 (iSight)).

  • Import Scenario from BPR - how to view the Version after import

    On SOLAR01 when you import scenarios from the BPR, how can you view the version of the Products that were imported? Sometimes in the BPR there are several versions available to import for a particular product.
    Once you have imported those business processes, how can you see the version that is tied to the one you imported?

    Helmut,
    If you don't have access to the server console, it might be possible to 'trick' tp into working from a workstation, but I wouldn't bet on it. You'd have to fake up a profile for it. I haven't tried this.
    Peering into the contents of a delivered transport file would be something that your Basis team would typically do. My suggestion is to work with them, either to use tp command-line option from the server console, or if that's not reasonable, then yes, go ahead and add it to the import queue of one of your sandbox systems. You can always delete it from the queue again later. If you don't actually import it, it isn't going to hurt anything.
    To do any of these options is going to require some level of filesystem access to your transport host, as you need to copy the two files that make up the transport there. You need to put the 'K' file into \usr\sap\trans\cofiles and the 'R' file into \usr\sap\trans\data. Then, you can either use the tp command-line tool, or you can go into STMS, go into the import queue of any system in the transport domain (so a sandbox is fine), and use Extras... Other Requests... Add and type in the transport request ID. Yes, this adds some entries about the transport into a few tables, but it doesn't actually import the transport, and it doesn't change anything about your system. It just allows the transport to show up as importable in the queue, and that will make it so that you can read the object list of the transport. Then, if you decide not to import it, you can delete it from the queue, and your system is back to the way it was before. Also, doing this will not put the transport into any other system's queue. Even if you import the transport (into a sandbox system), it won't show up in any other system's queue until you forward it.
    Regards,
    Matt

  • Some plz help a poor student

    Hi
    I'm a student stuck on a really crappy course my teacher has taught me nothing about java and CORBA and given me a coursework on it :(
    I just want 2 use this program client/server type with CORBA, it checks a users ID and username against those held in a database
    Can any1 help me do that please??
    import javax.swing.JOptionPane;
    import java.sql.*;
    public class log
    public static void main(String[] args)
    //client
    String UserId;
    String Password;
    UserId = JOptionPane.showInputDialog("Eneter your UserID"); // were the user eneters his User
    Password = JOptionPane.showInputDialog("Eneter your Password");//were the user eneters his Password
    //server
    try {
    //have to be in a try catch block
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //setting up the database
    String dataSourceName = "cw2";
    String dbURL = "jdbc:odbc:" + dataSourceName;
    Connection con = DriverManager.getConnection(dbURL, "","");
    //setting up the database
    Statement stmt = con.createStatement();
    String query = "SELECT Username , password FROM LOG"; // find the values and printen them out
    ResultSet rs = stmt.executeQuery(query);
    String s, n;
    boolean flag = false;
    while(rs.next())
    s = rs.getString("UserName");
    n = rs.getString("password");
    if(s.equals(UserId) && n.equals(Password))
    flag = true;
    System.out.println( " access allowed " );
    //grant access
    break;
    } //if
    } //while
    if(flag == false)
    System.out.println( " access refused " );
    //deny access
    catch (Exception err) {
    System.out.println("ERROR: " + err);
    System.exit(0);
    idl file
    module myapp
    interface validator
    boolean validate_user(in wstring username, in string password);

    Why not take a look at the tutorials?
    http://java.sun.com/j2se/1.4.1/docs/guide/idl/index.html
    http://java.sun.com/j2se/1.4.1/docs/guide/corba/index.html
    You could adapt the Hello World IDL from the tutorial from
    module HelloApp
    interface Hello
    string sayHello();
    oneway void shutdown();
    to something like
    module Security
    interface ClientVerifier
    boolean allowAccess(in wstring name, in wstring password);

  • Old Exchange 2007 is not moving MAPI clients to new server

    Good Afternoon all,
    I am in the process of moving from exchange 2007 to 2010.  I thought I read somewhere that Outlook will figure out in the background that there is a new exchange box and when I've moved everyone to it that Outlook clients will automatically be mapped
    to the new server.  I have moved 5 people over and all 5 did not re-map to the new exchange server.  I even tried closing/re-opening the app and rebooting the computer.  Did I miss a step somewhere?  Thanks in advance as I have 160 mailboxes
    to move over.  I'd like to do it gradually if the system will allow me to rather than do it all in one go.
    Thanks
    David
    EDIT--  My mobile users that I have moved are also reporting not getting email on their phones.  Mix of iphones and droid.  Tried rebooting and re-installing the Exchange profile.  Seems as though external access breaks as well.

    Hi There!!!!
    In Exchange 2010, clients do not connect directly to the mailbox role, they go through the
    CAS role, so it sounds like you need to set the RPCClientAccessServer to point to the new Exchange 2010 server.
    Do this via PowerShell : 
    GET-MAILBOXDATA | SET-MAILBOXDATABASE -RPCCLIENTACCESSSERVER <FQDN OF NEW CAS SERVER>
    But as you have 160 mailboxes to migrate , which would be quite time consuming and needs lots
    of efforts, so rather than opting manual way for migration  I would refer you to do this using any professional Migration Software like Stellar Mailbox Extractor for Exchange Server, which can perform the Migration of 160 mailboxes in quick time. 

Maybe you are looking for

  • Crystal report server2008 (XI R2): CMC session timeout error

    HI Crystal report server2008 (XI R2): CMC session timeout error             Accessing folders, scheduling reporting or running reports are working fine with Central Management Console (CMC) within the Crystal report server or accessing CMC within VPN

  • ArialUnicodeMS is missing error when opening PDF

    Hi I have Adobe Reader v9.0 on Windows XP SP3 When I try to open PDF document I get this error: "Cannot find or create the font 'ArialUnicodeMS'. Some characters my not display or print correctly" The document then open in gibrish. Please advise. Tha

  • Down-level Poster.png just a white box on IE8

    Hi everyone, I've created a very simple Edge Animate banner consisting of a background image and two layers of text that fade in, it shows up perfectly in everything except for (understandably) IE8 and I assume IE7, all I see is a white box. I insert

  • Suppress EULA

    I am having a problem getting EULA to suppress on my install of Adobe Acrobat X Standard.    I am using SCCM and the OSD to install it into the reference image and have used the Adobe customization wizard X to build my silent install package.  In the

  • Implement Transaction on EJB

    Hi! I have a situation - i have more than 2 separate method that will insert and update to different tables in our database. The problem is, all the tables should be successfully commit or rollback. Is it possible to commit all the transaction in dif