Cyrus SML ACAP server, version 0.2

ACAP (Application Configuration Access Protol) is an Internet standards-track protocol for remote preferences and other storage for Internet applications such as web browsers or mail readers.

The Cyrus SML acapd is a fully functional, fairly stable ACAP server. See the "notes" file for the current outstanding issues, which most applications probably won't notice.

Binary distribution installation

Here's the step by step installation instructions:

  1. Compile and install the Cyrus SASL library, available from ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/.
  2. Compile and install the frontend ACAP interface:
       % ./configure
       % make
       % make install
    
  3. Add the following line to the "/etc/services" file if it isn't already there:
       acap      674/tcp
    
  4. Add the following line to the "/etc/inetd.conf" file:
       acap  stream  tcp  nowait  root  /usr/cyrus/bin/frontend  frontend
    
  5. Restart inetd. Many systems provide an easy way to do this, but the generic method is to find the process id of inetd (use /bin/ps -elf on most systems), then kill -HUP pid.
  6. Create the ACAP configuration file:
       % cat /etc/acapd.conf
       configdirectory: /var/acap
       datadirectory: /var/spool/acap
       %
    
  7. Create the ACAP directories:
       % mkdir /var/acap
       % mkdir /var/spool/acap
       %
    

    If you want to log connections (this could be a lot of data!) create the directory "/var/acap/log".

  8. Start the backend ACAP process:
       % cd backend
       % ./backend-acapd
    
  9. Try to connect to the ACAP server by hand:
    % telnet localhost acap
    Trying 127.0.0.1...
    Connected to localhost.andrew.cmu.edu.
    Escape character is '^]'.
    * Acap (Implementation "SML Frontend, Carnegie Mellon Project Cyrus") 
    (ContextLimit "100") (Sasl "PLAIN" "ANONYMOUS" "GSSAPI" "KERBEROS_V4" 
    "DIGEST-MD5" "CRAM-MD5")
    1 AUTHENTICATE "ANONYMOUS" "larry"
    1 Ok (SASL {0}
    ) "Welcome"
    2 SEARCH "/" RETURN ("*") ALL
    2 ENTRY "" (("modtime" "19991210042235000000") ("entry" "") ("dataset.owner"
    "$master") ("dataset.acl" ({13}
    $anyone xrwia)))
    3 LOGOUT
    * BYE "have a nice day"
    3 OK "LOGOUT completed"
    Connection closed by foreign host.
    % 
    
  10. Enjoy!

Source distribution installation

  1. Compile SML/NJ. We recommend version 110.0.6, available from: ftp://ftp.research.bell-labs.com/dist/smlnj/release/110/. If you're using Redhat Linux, the full RPM distribution smlnj-110.0.6-0.i386.rpm should be fine.

    Otherwise, make sure to get 110-cm, 110-cml, 110-config, 110-ml-lex, 110-ml-yacc, 110-runtime, and 110-smlnj-lib, as well as the appropriate binary package for your architecture.

  2. Make sure that the "sml" binary is in your path, and continue with the binary direction instructions above. The configure script will automatically detect "sml" and compile the backend.