Annotation of 43BSD/contrib/xns/examples/authchtest/Clearinghouse.cr, revision 1.1

1.1     ! root        1: -- $Header: Clearinghouse.cr,v 1.2 85/03/10 05:22:58 jqj Exp $ --
        !             2: 
        !             3: -- $Log:       Clearinghouse.cr,v $
        !             4: -- Revision 1.2  85/03/10  05:22:58  jqj
        !             5: -- Modified for UNIX:  reordered declaratons to eliminate forward
        !             6: -- references, deleted recursive (StreamOf...) declarations, fixed
        !             7: -- lots of typos.
        !             8: --
        !             9: -- Revision 1.1 Initial revision - from Rochester
        !            10: 
        !            11: Clearinghouse: PROGRAM 2 VERSION 2 =
        !            12: BEGIN
        !            13:        DEPENDS UPON
        !            14:                BulkData(0) VERSION 1,
        !            15:                Authentication (14) VERSION 1;
        !            16: 
        !            17: -- TYPES AND CONSTANTS DESCRIBING NAMES --
        !            18: 
        !            19: Organization: TYPE = STRING;
        !            20: Domain: TYPE = STRING;
        !            21: Object: TYPE = STRING;
        !            22: 
        !            23: maxOrganizationsLength: CARDINAL = 20; -- in bytes --
        !            24: maxDomainLength: CARDINAL = 20; -- in bytes --
        !            25: maxObjectLength: CARDINAL = 40; -- in bytes --
        !            26: 
        !            27: -- There can be no wildcard characters in any of the following types. --
        !            28: OrganizationName: TYPE = Organization;
        !            29: 
        !            30: TwoPartName: TYPE = RECORD [
        !            31:        organization: Organization,
        !            32:        domain: Domain];
        !            33: 
        !            34: DomainName: TYPE = TwoPartName;
        !            35: 
        !            36: ThreePartName: TYPE = RECORD [
        !            37:        organization: Organization,
        !            38:        domain: Domain,
        !            39:        object: Object];
        !            40: 
        !            41: ObjectName: TYPE = ThreePartName;
        !            42: 
        !            43: Name: TYPE = ThreePartName;
        !            44: 
        !            45: -- Wildcard characters are permittedin OrganizationNamePatterns. --
        !            46: OrganizationNamePattern: TYPE = Organization;
        !            47: 
        !            48: -- Wildcard characters are permitted in the domain component of this type,
        !            49: -- but not in the organization component.
        !            50: DomainNamePattern: TYPE = TwoPartName;
        !            51: 
        !            52: -- Wildcard characters are permitted in the object component of this type,
        !            53: -- but not in the organization and domain components.
        !            54: ObjectNamePattern: TYPE = ThreePartName;
        !            55: 
        !            56: -- TYPES AND CONSTANTS DESCRIBING BULK PARAMETERS --
        !            57: 
        !            58: StreamOfDomain: TYPE = CHOICE OF {
        !            59:        nextSegment (0) => RECORD [
        !            60:                segment: SEQUENCE OF Domain,
        !            61:                restOfStream: StreamOfDomain],
        !            62:        lastSegment (1) => SEQUENCE OF Domain};
        !            63: 
        !            64: StreamOfDomainName: TYPE = CHOICE OF {
        !            65:        nextSegment (0) => RECORD [
        !            66:                segment: SEQUENCE OF DomainName,
        !            67:                restOfStream: StreamOfDomainName],
        !            68:        lastSeqment (1) => SEQUENCE OF DomainName};
        !            69: 
        !            70: StreamOfObject: TYPE = CHOICE OF {
        !            71:        nextSegment (0) => RECORD [
        !            72:                segment: SEQUENCE OF Object,
        !            73:                restOfStream: StreamOfObject],
        !            74:        lastSegment (1) => SEQUENCE OF Object};
        !            75: 
        !            76: StreamOfObjectName: TYPE = CHOICE OF {
        !            77:        nextSegment (0) => RECORD [
        !            78:                segment: SEQUENCE OF ObjectName,
        !            79:                restOfStream: StreamOfObjectName],
        !            80:        lastSegment (1) => SEQUENCE OF ObjectName};
        !            81: 
        !            82: StreamOfOrganization: TYPE = CHOICE OF {
        !            83:        nextSegment (0) => RECORD [
        !            84:                segment: SEQUENCE OF Organization,
        !            85:                restOfStream: StreamOfOrganization],
        !            86:        lastSegment (1) => SEQUENCE OF Organization};
        !            87: 
        !            88: StreamOfThreePartName: TYPE = CHOICE OF {
        !            89:        nextSegment (0) => RECORD [
        !            90:                segment: SEQUENCE OF ThreePartName,
        !            91:                restOfStream: StreamOfThreePartName],
        !            92:        lastSegment (1) => SEQUENCE OF ThreePartName};
        !            93: 
        !            94: -- TYPES AND CONSTANTS DESCRIBING PROPERTIES --
        !            95: 
        !            96: Property: TYPE = LONG CARDINAL;
        !            97: 
        !            98: -- A Name can have up to 250 Properties associated with it. --
        !            99: Properties: TYPE = SEQUENCE 250 OF Property;
        !           100: 
        !           101: all: Property = 0;
        !           102: nullProperty: Property = 37777777777B;
        !           103: 
        !           104: -- The value associated with an item property. --
        !           105: Item: TYPE = SEQUENCE 500 OF UNSPECIFIED;
        !           106: 
        !           107: -- TYPES AND CONSTANTS DESCRIBING NETWORK ADDRESSES --
        !           108: 
        !           109: -- Clearinghouse addresses aer stored in this form. --
        !           110: 
        !           111: NetworkAddress: TYPE = RECORD [
        !           112:        network: ARRAY 2 OF UNSPECIFIED,
        !           113:        host: ARRAY 3 OF UNSPECIFIED,
        !           114:        socket: UNSPECIFIED ];
        !           115: 
        !           116: NetworkAddressList: TYPE = SEQUENCE 40 OF NetworkAddress;
        !           117: 
        !           118: -- OTHER TYPES AND CONSTANTS --
        !           119: 
        !           120: -- How the client identifies itself to the service --
        !           121: Authenticator: TYPE = RECORD [
        !           122:        credentials: Authentication.Credentials,
        !           123:        verifier: Authentication.Verifier];
        !           124: 
        !           125: wildcard: STRING = "*"; -- the wildcard character (asterisk) --
        !           126: 
        !           127: -- ERRORS --
        !           128: 
        !           129: WhichArgument: TYPE = {
        !           130:        first(1), -- concerns the first name or property argument --
        !           131:        second(2) }; -- concerns the second name or property argument --
        !           132: 
        !           133: ArgumentProblem: TYPE = {
        !           134:        illegalProperty(10), -- property is not usable by a client --
        !           135:        illegalOrganizationName(11), -- the organization component of the name
        !           136:                -- is incorrect, e.g., too long or short, or has wild card
        !           137:                -- characters when not allowed --
        !           138:        illegalDomainName(12), -- the domain component of the name
        !           139:                -- is incorrect, e.g., too long or short, or has wild card
        !           140:                -- characters when not allowed --
        !           141:        illegalObjectName(13), -- the object component of the name
        !           142:                -- is incorrect, e.g., too long or short, or has wild card
        !           143:                -- characters when not allowed --
        !           144:        noSuchOrganization(14), -- the name's organization component does not exist --
        !           145:        noSuchDomain(15), -- the name's domain component does not exist --
        !           146:        noSuchObject(16) }; -- the name's object component does not exist --
        !           147: ArgumentError: ERROR [problem: ArgumentProblem, which: WhichArgument] = 2;
        !           148: 
        !           149: AuthenticationError: ERROR [problem: Authentication.Problem] = 6;
        !           150: 
        !           151: CallProblem: TYPE = {
        !           152:        accessRightsInsufficient(1), -- operation prevented by access controls --
        !           153:        tooBusy(2), -- server is too busy to service this request --
        !           154:        serverDown(3), -- a remote Clearinghouse server was down and was needed for this request --
        !           155:        useCourier(4), -- server insists that Courier be used for this particular request --
        !           156:        other(5) };
        !           157: CallError: ERROR [problem: CallProblem] = 1;
        !           158: 
        !           159: PropertyProblem: TYPE = {
        !           160:        missing(20), -- the object exists, but the property doesn't --
        !           161:        wrongType(21)}; -- client wanted a Group but it was an Item, or vice versa --
        !           162: PropertyError: ERROR [problem: PropertyProblem,
        !           163:        distinguishedObject: ObjectName] = 3;
        !           164: UpdateProblem: TYPE = {
        !           165:        noChange(30), -- operation wouldn't change the database --
        !           166:        outOfDate(31), -- more recent information was in database --
        !           167:        objectOverflow(32), -- the particular object will have too much data
        !           168:                -- associated with it --
        !           169:        databaseOverflow(33)}; -- the server has run out of room --
        !           170: UpdateError: ERROR [problem: UpdateProblem, found: BOOLEAN,
        !           171:        which: WhichArgument, distinguishedObject: ObjectName] = 4;
        !           172: 
        !           173: WrongServer: ERROR [hint: ObjectName] = 5;
        !           174: 
        !           175: -- PROCEDURES --
        !           176: 
        !           177: -- DEALING WITH OBJECTS --
        !           178: 
        !           179: CreateObject: PROCEDURE [name: ObjectName, agent: Authenticator]
        !           180: REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError,
        !           181:        WrongServer] = 2;
        !           182: 
        !           183: DeleteObject: PROCEDURE [name: ObjectName, agent: Authenticator]
        !           184: REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError,
        !           185:        WrongServer] = 3;
        !           186: 
        !           187: LookupObject: PROCEDURE [name: ObjectNamePattern, agent: Authenticator]
        !           188: RETURNS [distinguishedObject: ObjectName]
        !           189: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 4;
        !           190: 
        !           191: ListOrganizations: PROCEDURE [pattern: OrganizationNamePattern,
        !           192:        list: BulkData.Sink, agent: Authenticator]
        !           193: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 5;
        !           194: 
        !           195: ListDomain: PROCEDURE [pattern: DomainNamePattern, list: BulkData.Sink,
        !           196:        agent: Authenticator]
        !           197: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 6;
        !           198: 
        !           199: ListObjects: PROCEDURE [pattern: ObjectNamePattern, property: Property,
        !           200:        list: BulkData.Sink, agent: Authenticator]
        !           201: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 7;
        !           202: 
        !           203: ListAliasesOf: PROCEDURE [pattern: ObjectNamePattern, list: BulkData.Sink,
        !           204:        agent: Authenticator]
        !           205: RETURNS [distinguishedObject: ObjectName]
        !           206: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 9;
        !           207: 
        !           208: -- PROCEDURES DEALING WITH ALIASES --
        !           209: 
        !           210: CreateAlias: PROCEDURE [alias, sameAs: ObjectName, agent: Authenticator]
        !           211: RETURNS [distinguishedObject: ObjectName]
        !           212: REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError,
        !           213:        WrongServer] = 10;
        !           214: 
        !           215: DeleteAlias: PROCEDURE [alias: ObjectName, agent: Authenticator]
        !           216: RETURNS [distinguishedObject: ObjectName]
        !           217: REPORTS [ArgumentError, AuthenticationError, CallError, UpdateError,
        !           218:        WrongServer] = 11;
        !           219: 
        !           220: ListAliases: PROCEDURE [pattern: ObjectNamePattern, list: BulkData.Sink,
        !           221:        agent: Authenticator]
        !           222: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 8;
        !           223: 
        !           224: -- PROCEDURES DEALING WITH PROPERTIES --
        !           225: 
        !           226: DeleteProperty: PROCEDURE [name: ObjectName, property: Property,
        !           227:        agent: Authenticator]
        !           228: RETURNS [distinguishedObject: ObjectName]
        !           229: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           230:        UpdateError, WrongServer] = 14;
        !           231: 
        !           232: ListProperties: PROCEDURE [pattern: ObjectNamePattern, agent: Authenticator]
        !           233: RETURNS [distinguishedObject: ObjectName, properties: Properties]
        !           234: REPORTS [ArgumentError, AuthenticationError, CallError, WrongServer] = 15;
        !           235: 
        !           236: -- PROCEDURES DEALING WITH THE ITEM PROPERTY --
        !           237: 
        !           238: AddItemProperty: PROCEDURE [name: ObjectName, newProperty: Property,
        !           239:        value: Item, agent: Authenticator]
        !           240: RETURNS [distinguishedObject: ObjectName]
        !           241: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           242:        UpdateError, WrongServer] = 13;
        !           243: 
        !           244: RetrieveItem: PROCEDURE [pattern: ObjectNamePattern, property: Property,
        !           245:        agent: Authenticator]
        !           246: RETURNS [distinguishedObject: ObjectName, value: Item]
        !           247: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           248:        WrongServer] = 16;
        !           249: 
        !           250: ChangeItem: PROCEDURE [name: ObjectName, property: Property, newValue: Item,
        !           251:        agent: Authenticator]
        !           252: RETURNS [distinguishedObject: ObjectName]
        !           253: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           254:        UpdateError, WrongServer] = 17;
        !           255: 
        !           256: -- PROCEDURES DEALING WITH THE GROUP PROPERTY -- 
        !           257: 
        !           258: AddGroupProperty: PROCEDURE [name: ObjectName, newProperty: Property,
        !           259:        membership: BulkData.Source, agent: Authenticator]
        !           260: RETURNS [distinguishedObject: ObjectName]
        !           261: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           262:        UpdateError, WrongServer] = 12;
        !           263: 
        !           264: RetrieveMembers: PROCEDURE [pattern: ObjectNamePattern, property: Property,
        !           265:        membership: BulkData.Sink, agent: Authenticator]
        !           266: RETURNS [distinguishedObject: ObjectName]
        !           267: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           268:        WrongServer] = 18;
        !           269: 
        !           270: AddMember: PROCEDURE [name: ObjectName, property: Property,
        !           271:        newMember: ThreePartName, agent: Authenticator]
        !           272: RETURNS [distinguishedObject: ObjectName]
        !           273: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           274:        UpdateError, WrongServer] = 19;
        !           275: 
        !           276: AddSelf: PROCEDURE [name: ObjectName, property: Property, agent: Authenticator]
        !           277: RETURNS [distinguishedObject: ObjectName]
        !           278: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           279:        UpdateError, WrongServer] = 20;
        !           280: 
        !           281: DeleteMember: PROCEDURE [name: ObjectName, property: Property,
        !           282:        member: ThreePartName, agent: Authenticator]
        !           283: RETURNS [distinguishedObject: ObjectName]
        !           284: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           285:        UpdateError, WrongServer] = 21;
        !           286: 
        !           287: DeleteSelf: PROCEDURE [name: ObjectName, property: Property, agent: Authenticator]
        !           288: RETURNS [distinguishedObject: ObjectName]
        !           289: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           290:        UpdateError, WrongServer] = 22;
        !           291: 
        !           292: isMember: PROCEDURE [memberOf: ObjectNamePattern,
        !           293:        property, secondaryProperty: Property, name: ThreePartName,
        !           294:        agent: Authenticator]
        !           295: RETURNS [isMember: BOOLEAN, distinguishedObject: ObjectName]
        !           296: REPORTS [ArgumentError, AuthenticationError, CallError, PropertyError,
        !           297:        WrongServer] = 23;
        !           298: 
        !           299: -- PROCEDURES DEALING WITH SERVERS --
        !           300: 
        !           301: RetrieveAddresses: PROCEDURE
        !           302: RETURNS [address: NetworkAddressList]
        !           303: REPORTS [CallError] = 0;
        !           304: 
        !           305: ListDomainServed: PROCEDURE [domains: BulkData.Sink, agent: Authenticator]
        !           306: REPORTS [AuthenticationError, CallError] = 1;
        !           307: 
        !           308: END. -- of Clearinghouse --
        !           309: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.