Exemple #1
0
void
loadFISAccessList()
{
    CONDITION cond;
    DMAN_FISACCESS f,
        criteria;
    char b[256];

    if (FISAccessList == NULL)
	FISAccessList = LST_Create();
    if (FISAccessList == NULL)
	return;

    memset(&f, 0, sizeof(f));
    f.Type = DMAN_K_FISACCESS;
    criteria.Type = DMAN_K_FISACCESS;
    criteria.Flag = 0;
    cond = DMAN_Select(&dmanHandle,
		       (DMAN_GENERICRECORD *) & f,
		       (DMAN_GENERICRECORD *) & criteria,
		       FISAccessList, NULL, NULL, NULL);
    if (cond != DMAN_NORMAL)
	return;

    MUT_LoadList(wFISAccessList, FISAccessList,
		 formatFISAccess, b);
}
Exemple #2
0
CONDITION
DMAN_VerifyPrintServerCFG(DMAN_HANDLE ** handle, char *requestingTitle, char *respondingTitle, int gqID, CTNBOOLEAN * access)
{
    CONDITION				cond;
    DMAN_PRINTSERVERCFG		cfgWork, cfgCriteria;
    PRIVATE_HANDLE			** prv;
    long			        count;

    prv = (PRIVATE_HANDLE **) handle;
    *access = FALSE;

    cfgWork.Type = cfgCriteria.Type = DMAN_K_PRINTSERVERCFG;
    strcpy(cfgCriteria.RequestingTitle, requestingTitle);
    strcpy(cfgCriteria.RespondingTitle, respondingTitle);
    cfgCriteria.GQId = gqID;
    cfgCriteria.Flag = DMAN_K_PRINTSERVER_REQUESTING | DMAN_K_PRINTSERVER_RESPONDING | DMAN_K_PRINTSERVER_GQID;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) & cfgWork, (DMAN_GENERICRECORD *) & cfgCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL) {
    	char	    strOfGQId[10];

    	sprintf(strOfGQId, "%d", gqID);
    	return COND_PushCondition(DMAN_ERROR(DMAN_ILLEGALPRINTSERVERCONFIGURATION), requestingTitle, respondingTitle, strOfGQId, "DMAN_VerifyPrintServerCFG");
    }
    if (count == 1)	*access = TRUE;

    return DMAN_NORMAL;
}
Exemple #3
0
CONDITION
DMAN_VerifyApplication(DMAN_HANDLE ** handle, char *title, char *node)
{
    CONDITION					cond;
    DMAN_APPLICATIONENTITY		aeWork,	aeCriteria;
    PRIVATE_HANDLE				** prv;
    long				        count;

    prv = (PRIVATE_HANDLE **) handle;

    aeWork.Type = aeCriteria.Type = DMAN_K_APPLICATIONENTITY;
    strcpy(aeCriteria.Title, title);
    aeCriteria.Flag = DMAN_K_APPLICATION_TITLE;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) & aeWork, (DMAN_GENERICRECORD *) & aeCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL)
    	return COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONVERIFICATIONFAILED), title, node, "DMAN_VerifyApplication");

    if (count != 1){
    	(void) COND_PushCondition(DMAN_ERROR(DMAN_TITLENOTFOUND), title, "DMAN_VerifyApplication");
    	return COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONVERIFICATIONFAILED), title, node, "DMAN_VerifyApplication");
    }

    if (!nodeCompare(node, aeWork.Node)){
    	if(strcmp(aeWork.Node, "*") == 0){
    		strcpy(aeWork.Node, node);
    	}else{
    		(void) COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONNODEMISMATCH), title, node, aeWork.Node, "DMAN_VerifyApplication");
    		return COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONVERIFICATIONFAILED), title, node, "DMAN_VerifyApplication");
    	}
    }
    return DMAN_NORMAL;
}
Exemple #4
0
/* establishAssociation
**
** Purpose:
**	Request for the specific service class and then establish an
**	Association
**
** Parameter Dictionary:
**	networkKey		Key describing the network connection
**	queryList		Handle to list of queries
**	moveDestination		Name of destination where images are to be moved
**	sendAssociation		Key describing the Association
**	params			Service parameters describing the Association
**
** Return Values:
**	DUL_NORMAL	on success
**
** Notes:
**
** Algorithm:
**	Description of the algorithm (optional) and any other notes.
*/
CONDITION
establishAssociation(DUL_NETWORKKEY ** networkKey,
		     char *destination,
		     DMAN_HANDLE ** handle,
		     DUL_ASSOCIATIONKEY ** sendAssociation,
		     DUL_ASSOCIATESERVICEPARAMETERS * params)
{
    CONDITION cond;
    DMAN_APPLICATIONENTITY ae;
    DMAN_APPLICATIONENTITY criteria;
    long count;

    memset(&criteria, 0, sizeof(criteria));
    criteria.Type = ae.Type = DMAN_K_APPLICATIONENTITY;
    criteria.Flag = DMAN_K_APPLICATION_TITLE;
    strcpy(criteria.Title, destination);
    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) & ae,
	       (DMAN_GENERICRECORD *) & criteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL)
	return 0;
    if (count != 1)
	return 0;

    sprintf(params->calledPresentationAddress, "%s:%-d", ae.Node, ae.Port);

    cond = SRV_RequestServiceClass(DICOM_SOPCLASSSTORAGECOMMITMENTPUSHMODEL,
				   DUL_SC_ROLE_DEFAULT, params);
    if (CTN_INFORM(cond))
	(void) COND_PopCondition(FALSE);
    else if (cond != SRV_NORMAL)
	return 0;		/* repair */

    cond = DUL_RequestAssociation(networkKey, params, sendAssociation);
    if (cond != DUL_NORMAL) {
	printf("Could not establish Association with %s %s %s\n",
	       params->callingAPTitle,
	       params->calledAPTitle,
	       params->calledPresentationAddress);
	COND_DumpConditions();
	return 0;		/* repair */
    }
    return APP_NORMAL;
}
Exemple #5
0
CONDITION
DMAN_LookupFISAccess(DMAN_HANDLE ** handle, char *applicationTitle, DMAN_FISACCESS * f)
{
    CONDITION 			cond;
    DMAN_FISACCESS		criteria;
    PRIVATE_HANDLE 		**prv;
    long		        count;

    prv = (PRIVATE_HANDLE **) handle;

    f->Type = criteria.Type = DMAN_K_FISACCESS;
    strcpy(criteria.Title, applicationTitle);
    criteria.Flag = DMAN_K_FISACCESS_TITLE;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) f, (DMAN_GENERICRECORD *) & criteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL || count != 1) return COND_PushCondition(DMAN_ERROR(DMAN_FISACCESSLOOKUPFAILED), applicationTitle, "DMAN_LookupFISAccess");

    return DMAN_NORMAL;
}
Exemple #6
0
CONDITION
DMAN_LookupStorage(DMAN_HANDLE ** handle, char *applicationTitle, DMAN_STORAGEACCESS * s)
{
    CONDITION 				cond;
    DMAN_STORAGEACCESS		storageCriteria;
    PRIVATE_HANDLE 			**prv;
    long			        count;

    prv = (PRIVATE_HANDLE **) handle;

    s->Type = storageCriteria.Type = DMAN_K_STORAGEACCESS;
    strcpy(storageCriteria.Title, applicationTitle);
    storageCriteria.Flag = DMAN_K_STORAGEACCESS_TITLE;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) s, (DMAN_GENERICRECORD *) & storageCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL || count != 1) return COND_PushCondition(DMAN_ERROR(DMAN_STORAGELOOKUPFAILED), applicationTitle, "DMAN_LookupStorage");

    return DMAN_NORMAL;
}
Exemple #7
0
CONDITION
DMAN_ApplicationAccess(DMAN_HANDLE ** handle, const char *requestingTitle, const char *respondingTitle, CTNBOOLEAN * access)
{
    CONDITION				cond;
    DMAN_SECURITYMATRIX		matrixWork, matrixCriteria;
    PRIVATE_HANDLE			** prv;
    long			        count;

    prv = (PRIVATE_HANDLE **) handle;
    *access = FALSE;

    matrixWork.Type = matrixCriteria.Type = DMAN_K_SECURITYMATRIX;
    strcpy(matrixCriteria.RequestingTitle, requestingTitle);
    strcpy(matrixCriteria.RespondingTitle, respondingTitle);
    matrixCriteria.Flag = DMAN_K_SECURITY_REQUESTING |	DMAN_K_SECURITY_RESPONDING;

    cond = DMAN_Select(handle,(DMAN_GENERICRECORD *) & matrixWork, (DMAN_GENERICRECORD *) & matrixCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL) return COND_PushCondition(DMAN_ERROR(DMAN_ILLEGALCONNECTION), requestingTitle, respondingTitle, "DMAN_ApplicationAccess");
    if (count == 1)	*access = TRUE;

    return DMAN_NORMAL;
}
Exemple #8
0
CONDITION
DMAN_LookupApplication(DMAN_HANDLE ** handle, char *title, DMAN_APPLICATIONENTITY * ae)
{
    CONDITION					cond;
    DMAN_APPLICATIONENTITY		aeCriteria;
    PRIVATE_HANDLE				** prv;
    long				        count;

    prv = (PRIVATE_HANDLE **) handle;

    aeCriteria.Type = DMAN_K_APPLICATIONENTITY;
    strcpy(aeCriteria.Title, title);
    aeCriteria.Flag = DMAN_K_APPLICATION_TITLE;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) ae, (DMAN_GENERICRECORD *) & aeCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL) return COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONLOOKUPFAILED), title, "DMAN_LookupApplication");
    if (count != 1){
    	(void) COND_PushCondition(DMAN_ERROR(DMAN_TITLENOTFOUND), title, "DMAN_LookupApplication");
    	return COND_PushCondition(DMAN_ERROR(DMAN_APPLICATIONLOOKUPFAILED), title, "DMAN_LookupApplication");
    }
    return DMAN_NORMAL;
}
Exemple #9
0
void
loadGroupGroupList()
{
    CONDITION
    cond;
    DMAN_GROUPNAMES
	g,
	criteria;
    char
        b[256];

    if (createLists() == 0)
	return;

    memset(&g, 0, sizeof(g));
    g.Type = DMAN_K_GROUPNAMES;
    criteria.Type = DMAN_K_GROUPNAMES;
    criteria.Flag = 0;
    cond = DMAN_Select(&dmanHandle,
		       (DMAN_GENERICRECORD *) & g,
		       (DMAN_GENERICRECORD *) & criteria,
		       groupNamesList, NULL, NULL, NULL);
    if (cond != DMAN_NORMAL) {
	COND_DumpConditions();
	return;
    }
    cond = extractGroups(groupNamesList, groupGroupList);
    if (cond != 1)
	return;

    MUT_LoadList(wGroupGroupList, groupGroupList,
		 formatGroupGroup, b);


    (void) DMAN_ClearList(groupTitleList);
    MUT_LoadList(wGroupTitleList, groupTitleList,
		 formatGroupTitle, b);
}
Exemple #10
0
CONDITION
DMAN_SelectImageDestinations(DMAN_HANDLE ** handle, const char *srcApplication, LST_HEAD * lst)
{
    CONDITION 				cond;
    DMAN_VIDEOIMAGEDEST 	imageDestination;
    DMAN_VIDEOIMAGEDEST 	workRecord;
    PRIVATE_HANDLE 			**prv;
    long 					count;

    prv = (PRIVATE_HANDLE **) handle;

    memset(&imageDestination, 0, sizeof(imageDestination));
    imageDestination.Type = DMAN_K_VIDEOIMAGEDEST;
    workRecord = imageDestination;

    strcpy(imageDestination.RequestingTitle, srcApplication);
    imageDestination.Flag = DMAN_K_VIDEOIMAGE_REQUESTING;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) & workRecord, (DMAN_GENERICRECORD *) & imageDestination, lst, NULL, &count, NULL);
    if (cond != DMAN_NORMAL) return cond;		/* repair */

    return DMAN_NORMAL;
}
Exemple #11
0
CONDITION
DMAN_StorageControl(DMAN_HANDLE ** handle, char *requestingTitle, char *respondingTitle, DMAN_STORAGECONTROL * storage)
{
    CONDITION				cond;
    DMAN_STORAGECONTROL		criteria;
    PRIVATE_HANDLE			** prv;
    long			        count;

    prv = (PRIVATE_HANDLE **) handle;

    storage->Type = criteria.Type = DMAN_K_STORAGECONTROL;
    strcpy(criteria.RequestingTitle, requestingTitle);
    strcpy(criteria.RespondingTitle, respondingTitle);
    criteria.Flag = DMAN_K_STORAGECONTROL_REQUESTING | DMAN_K_STORAGECONTROL_RESPONDING;

    cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) storage, (DMAN_GENERICRECORD *) & criteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL) return 0;
    if (count != 1){
    	fprintf(stderr,"Not found %s/%s in StorageControl\n",requestingTitle,respondingTitle);
    	return 0;
    };

    return DMAN_NORMAL;
}
Exemple #12
0
CONDITION
DMAN_StorageAccess(DMAN_HANDLE ** handle, char *requestingTitle, char *respondingTitle, CTNBOOLEAN * readAccess, CTNBOOLEAN * writeAccess)
{
    CONDITION				cond;
    DMAN_STORAGEACCESS		databaseWork, databaseCriteria;
    DMAN_GROUPNAMES			groupWork, groupCriteria;
    PRIVATE_HANDLE			** prv;
    long			        count;
    int					    accessFlag = 0, accessRight = 0;

    prv = (PRIVATE_HANDLE **) handle;

    if ((*prv)->storageAccess && strcmp((*prv)->requestingTitle, requestingTitle) == 0 && strcmp((*prv)->respondingTitle, respondingTitle) == 0) {
    	*readAccess  = (*prv)->readAccess;
    	*writeAccess = (*prv)->writeAccess;
    	return DMAN_NORMAL;
    }
    *readAccess = *writeAccess = FALSE;

    databaseWork.Type = databaseCriteria.Type = DMAN_K_STORAGEACCESS;
    strcpy(databaseCriteria.Title, respondingTitle);

    cond = DMAN_Select(handle,(DMAN_GENERICRECORD *) & databaseWork,(DMAN_GENERICRECORD *) & databaseCriteria, NULL, NULL, &count, NULL);
    if (cond != DMAN_NORMAL)
    	return COND_PushCondition(DMAN_ERROR(DMAN_STORAGEACCESSDENIED), requestingTitle, respondingTitle, "DMAN_StorageAccess");
    if (count == 0) {
    	(*prv)->storageAccess = TRUE;
    	return DMAN_NORMAL;
    }

    accessRight = databaseWork.Access;

    /* If the calling application is the owner of the database, turn on access rights for the owner. */
    if (accessRight > 99){ // Owner access
    	if (strcmp(requestingTitle, databaseWork.Owner) == 0) accessFlag |= accessRight / 100;
    	accessRight = databaseWork.Access % 100;
    }

    /* If we still don't have all of the access rights we might want to
    ** have, see if the requesting application is in the group and turn
    ** on access for that group.
    */
    if (accessRight > 9){ // Group access
    	groupWork.Type = groupCriteria.Type = DMAN_K_GROUPNAMES;
    	strcpy(groupCriteria.Title, requestingTitle);
    	strcpy(groupCriteria.GroupName, databaseWork.GroupName);

    	cond = DMAN_Select(handle, (DMAN_GENERICRECORD *) & groupWork, (DMAN_GENERICRECORD *) & groupCriteria, NULL, NULL, &count, NULL);
    	if (cond != DMAN_NORMAL)
    		return COND_PushCondition(DMAN_ERROR(DMAN_STORAGEACCESSDENIED), requestingTitle, respondingTitle, "DMAN_StorageAccess");
   		if (count == 1) accessFlag |= accessRight / 10;
			accessRight = databaseWork.Access % 10;
    }

    /* If all access is not turned on, try the access for anyone  */
    accessFlag |= accessRight;

    (*prv)->storageAccess = TRUE;

    if (accessFlag == ACCESS_READ){
    	*readAccess  = TRUE;
    	*writeAccess = FALSE;
	}else if (accessFlag == ACCESS_WRITE){
    	*readAccess  = FALSE;
    	*writeAccess = TRUE;
    }else if (accessFlag == ACCESS_READWRITE){
    	*readAccess  = TRUE;
    	*writeAccess = TRUE;
    }else{
    	*readAccess  = FALSE;
    	*writeAccess = FALSE;
        (*prv)->storageAccess = FALSE;
    }

    return DMAN_NORMAL;
}