Example #1
0
static krb5_error_code
init_context_from_config_file(krb5_context context)
{
    krb5_error_code ret;
    const char * tmp;
    char **s;
    krb5_enctype *tmptypes;

    INIT_FIELD(context, time, max_skew, 5 * 60, "clockskew");
    INIT_FIELD(context, time, kdc_timeout, 30, "kdc_timeout");
    INIT_FIELD(context, time, host_timeout, 3, "host_timeout");
    INIT_FIELD(context, int, max_retries, 3, "max_retries");

    INIT_FIELD(context, string, http_proxy, NULL, "http_proxy");

    ret = krb5_config_get_bool_default(context, NULL, FALSE,
				       "libdefaults",
				       "allow_weak_crypto", NULL);
    if (ret) {
	krb5_enctype_enable(context, ETYPE_DES_CBC_CRC);
	krb5_enctype_enable(context, ETYPE_DES_CBC_MD4);
	krb5_enctype_enable(context, ETYPE_DES_CBC_MD5);
	krb5_enctype_enable(context, ETYPE_DES_CBC_NONE);
	krb5_enctype_enable(context, ETYPE_DES_CFB64_NONE);
	krb5_enctype_enable(context, ETYPE_DES_PCBC_NONE);
    }

    ret = set_etypes (context, "default_etypes", &tmptypes);
    if(ret)
	return ret;
    free(context->etypes);
    context->etypes = tmptypes;

    ret = set_etypes (context, "default_etypes_des", &tmptypes);
    if(ret)
	return ret;
    free(context->etypes_des);
    context->etypes_des = tmptypes;

    ret = set_etypes (context, "default_as_etypes", &tmptypes);
    if(ret)
	return ret;
    free(context->as_etypes);
    context->as_etypes = tmptypes;

    ret = set_etypes (context, "default_tgs_etypes", &tmptypes);
    if(ret)
	return ret;
    free(context->tgs_etypes);
    context->tgs_etypes = tmptypes;

    ret = set_etypes (context, "permitted_enctypes", &tmptypes);
    if(ret)
	return ret;
    free(context->permitted_enctypes);
    context->permitted_enctypes = tmptypes;

    /* default keytab name */
    tmp = NULL;
    if(!issuid())
	tmp = getenv("KRB5_KTNAME");
    if(tmp != NULL)
	context->default_keytab = tmp;
    else
	INIT_FIELD(context, string, default_keytab,
		   KEYTAB_DEFAULT, "default_keytab_name");

    INIT_FIELD(context, string, default_keytab_modify,
	       NULL, "default_keytab_modify_name");

    INIT_FIELD(context, string, time_fmt,
	       "%Y-%m-%dT%H:%M:%S", "time_format");

    INIT_FIELD(context, string, date_fmt,
	       "%Y-%m-%d", "date_format");

    INIT_FIELD(context, bool, log_utc,
	       FALSE, "log_utc");



    /* init dns-proxy slime */
    tmp = krb5_config_get_string(context, NULL, "libdefaults",
				 "dns_proxy", NULL);
    if(tmp)
	roken_gethostby_setup(context->http_proxy, tmp);
    krb5_free_host_realm (context, context->default_realms);
    context->default_realms = NULL;

    {
	krb5_addresses addresses;
	char **adr, **a;

	krb5_set_extra_addresses(context, NULL);
	adr = krb5_config_get_strings(context, NULL,
				      "libdefaults",
				      "extra_addresses",
				      NULL);
	memset(&addresses, 0, sizeof(addresses));
	for(a = adr; a && *a; a++) {
	    ret = krb5_parse_address(context, *a, &addresses);
	    if (ret == 0) {
		krb5_add_extra_addresses(context, &addresses);
		krb5_free_addresses(context, &addresses);
	    }
	}
	krb5_config_free_strings(adr);

	krb5_set_ignore_addresses(context, NULL);
	adr = krb5_config_get_strings(context, NULL,
				      "libdefaults",
				      "ignore_addresses",
				      NULL);
	memset(&addresses, 0, sizeof(addresses));
	for(a = adr; a && *a; a++) {
	    ret = krb5_parse_address(context, *a, &addresses);
	    if (ret == 0) {
		krb5_add_ignore_addresses(context, &addresses);
		krb5_free_addresses(context, &addresses);
	    }
	}
	krb5_config_free_strings(adr);
    }

    INIT_FIELD(context, bool, scan_interfaces, TRUE, "scan_interfaces");
    INIT_FIELD(context, int, fcache_vno, 0, "fcache_version");
    /* prefer dns_lookup_kdc over srv_lookup. */
    INIT_FIELD(context, bool, srv_lookup, TRUE, "srv_lookup");
    INIT_FIELD(context, bool, srv_lookup, context->srv_lookup, "dns_lookup_kdc");
    INIT_FIELD(context, int, large_msg_size, 1400, "large_message_size");
    INIT_FIELD(context, int, max_msg_size, 1000 * 1024, "maximum_message_size");
    INIT_FLAG(context, flags, KRB5_CTX_F_DNS_CANONICALIZE_HOSTNAME, TRUE, "dns_canonicalize_hostname");
    INIT_FLAG(context, flags, KRB5_CTX_F_CHECK_PAC, TRUE, "check_pac");

    if (context->default_cc_name)
	free(context->default_cc_name);
    context->default_cc_name = NULL;
    context->default_cc_name_set = 0;

    s = krb5_config_get_strings(context, NULL, "logging", "krb5", NULL);
    if(s) {
	char **p;

	if (context->debug_dest)
	    krb5_closelog(context, context->debug_dest);

	krb5_initlog(context, "libkrb5", &context->debug_dest);
	for(p = s; *p; p++)
	    krb5_addlog_dest(context, context->debug_dest, *p);
	krb5_config_free_strings(s);
    }

    tmp = krb5_config_get_string(context, NULL, "libdefaults",
				 "check-rd-req-server", NULL);
    if (tmp == NULL && !issuid())
	tmp = getenv("KRB5_CHECK_RD_REQ_SERVER");
    if(tmp) {
	if (strcasecmp(tmp, "ignore") == 0)
	    context->flags |= KRB5_CTX_F_RD_REQ_IGNORE;
    }
    ret = krb5_config_get_bool_default(context, NULL, TRUE,
				       "libdefaults",
				       "fcache_strict_checking", NULL);
    if (ret)
	context->flags |= KRB5_CTX_F_FCACHE_STRICT_CHECKING;

    return 0;
}
Example #2
0
/*------------------------------------------------------------------*/
int main(int argc, char *Inputfile[])
{
  REAL xlength,ylength,delx,dely,t_end,delt,tau,t;
  REAL del_trace,del_inj,del_streak,del_vec;
  REAL pos1x,pos2x,pos1y,pos2y;
  int  imax,jmax,wW,wE,wN,wS,itermax,itersor=0,write,N;
  REAL Re,Pr,GX,GY,UI,VI,TI,beta;
  REAL eps,omg,gamma,res;
  int  p_bound;
  REAL **U,**V,**P,**PSI,**ZETA,**RHS,**F,**G, **TEMP, **HEAT;
  int  **FLAG;
  int  ppc,ifull=0,isurf=0,ibound=0;
  char problem[30];
  char vecfile[30],tracefile[30],streakfile[30];
  char infile[30],outfile[30];
  struct particleline *Particlelines;
  int init_case, cycle;
  int a,j,i,pass,imeas,jmeas;
  REAL area,oldarea;
  time_t start = time(NULL);
  REAL xmeas,ymeas;

  xmeas = 3; //Here you can enter a point to
  ymeas = 12; //measure the P and V of over time.


  /* READ the parameters of the problem.                */
  /* Stop if problem type or inputfile are not defined  */       
  /*----------------------------------------------------*/
  if( READ_PARAMETER(Inputfile[1],problem,
                     &xlength,&ylength,&imax,&jmax,&delx,&dely,
		     &t_end,&delt,&tau, 
                     &del_trace,&del_inj,&del_streak,&del_vec,
                     vecfile,tracefile,streakfile,
                     infile,outfile,
                     &N,&pos1x,&pos1y,&pos2x,&pos2y,
		     &itermax,&eps,&omg,&gamma,&p_bound,
		     &Re,&Pr,&beta,&GX,&GY,&UI,&VI,&TI,
		     &wW,&wE,&wN,&wS) != 0 ) return(1); 

  imeas = xmeas/delx;
  jmeas = ymeas/dely;

  /* Allocate memory for the arrays */
  /*--------------------------------*/
  U    = RMATRIX(0,imax+1,0,jmax+1);
  V    = RMATRIX(0,imax+1,0,jmax+1);
  F    = RMATRIX(0,imax+1,0,jmax+1);
  G    = RMATRIX(0,imax+1,0,jmax+1);
  P    = RMATRIX(0,imax+1,0,jmax+1);
  TEMP = RMATRIX(0,imax+1,0,jmax+1);
  PSI  = RMATRIX(0,imax,0,jmax);
  ZETA = RMATRIX(1,imax-1,1,jmax-1);
  HEAT = RMATRIX(0,imax,0,jmax);
  RHS  = RMATRIX(0,imax+1,0,jmax+1); 
  FLAG = IMATRIX(0,imax+1,0,jmax+1);
  ppc  = 1;                             

  /* Read initial values from file "infile" */
  /*----------------------------------------*/
  init_case = READ_bin(U,V,P,TEMP,FLAG,imax,jmax,infile); 

  if( init_case > 0 ) return(1);      /* Error while reading "infile" */
  if( init_case < 0 ){                /* Set initial values if        */
                                      /* "infile" is not specified    */
     INIT_UVP(problem,U,V,P,TEMP,imax,jmax,UI,VI,TI); 
     INIT_FLAG(problem,FLAG,imax,jmax,delx,dely,&ibound);
    }

  /* Initialize particles for streaklines or particle tracing */
  /*----------------------------------------------------------*/
  if (strcmp(streakfile,"none") || strcmp(tracefile,"none"))
     Particlelines = SET_PARTICLES(N,pos1x,pos1y,pos2x,pos2y);

  /* Initialize particles for free boundary problems */      
  /*-------------------------------------------------*/
  if (!strcmp(problem,"drop") || !strcmp(problem,"dam")/* ||
		  !strcmp(problem,"icecube")*/)
     Particlelines = INIT_PARTICLES(&N,imax,jmax,delx,dely,ppc,problem,U,V,P);

  SETBCOND(U,V,P,TEMP,FLAG,imax,jmax,wW,wE,wN,wS);
  SETSPECBCOND(problem,U,V,P,TEMP,imax,jmax,UI,VI);


                /* t i m e    l o o p */
                /*--------------------*/
  t = 0.0;
  cycle = 0;
  for(pass = 1; pass <=2; pass++) {
  for(t,cycle; t < t_end; t+=delt,cycle++)
  {
   COMP_delt(&delt, t, imax, jmax, delx, dely, U, V, Re, Pr, tau, &write,
             del_trace, del_inj, del_streak, del_vec);   


   /* Determine fluid cells for free boundary problems */
   /* and set boundary values at free surface          */
   /*--------------------------------------------------*/
   if (!strcmp(problem,"drop") || !strcmp(problem,"dam") ||
       !strcmp(problem,"molding") || !strcmp(problem,"wave") ||
	   (pass==2 && !strcmp(problem,"icecube")))
     {
      MARK_CELLS(FLAG,imax,jmax,delx,dely,&ifull,&isurf,
                 N,Particlelines);
      SET_UVP_SURFACE(U,V,P,FLAG,GX,GY,imax,jmax,Re,delx,dely,delt);
     }
   else
      ifull = imax*jmax-ibound;

   /* Compute new temperature */
   /*-------------------------*/
   COMP_TEMP(U,V,TEMP,FLAG,imax,jmax,delt,delx,dely,gamma,Re,Pr);

   /* Compute tentative velocity field (F,G) */
   /*----------------------------------------*/
   COMP_FG(U,V,TEMP,F,G,FLAG,imax,jmax,delt,delx,dely,GX,GY,gamma,Re,beta);

   /* Compute right hand side for pressure equation */
   /*-----------------------------------------------*/
   COMP_RHS(F,G,RHS,FLAG,imax,jmax,delt,delx,dely);


   /* Debug Code */
/*
   printf ("\nGeometry of the fluid domain:\n\n");
   	for(j=jmax+1;j>=0;j--)
	{
		for(i=0;i<=imax+1;i++)
			printf("%d ", (int) P[i][j]);
		printf("\n");
	}
	printf("\n\n");
	scanf("%d", &a);
	*/
   /* End Debug */

   /* Solve the pressure equation by successive over relaxation */
   /*-----------------------------------------------------------*/
   if (ifull > 0)
      itersor = POISSON(P,RHS,FLAG,imax,jmax,delx,dely,
                        eps,itermax,omg,&res,ifull,p_bound);

   printf("t_end= %1.5g, t= %1.3e, delt= %1.1e, iterations %3d, res: %e, F-cells: %d, S-cells: %d, B-cells: %d\n",
                    t_end, t+delt, delt, itersor,res,ifull,isurf,ibound);  

   /* Compute the new velocity field */
   /*--------------------------------*/
   ADAP_UV(U,V,F,G,P,FLAG,imax,jmax,delt,delx,dely);

   /* Set boundary conditions */
   /*-------------------------*/
   SETBCOND(U,V,P,TEMP,FLAG,imax,jmax,wW,wE,wN,wS);
   /* Set special boundary conditions */
   /* Overwrite preset default values */
   /*---------------------------------*/
   SETSPECBCOND(problem,U,V,P,TEMP,imax,jmax,UI,VI);

   if (!strcmp(problem,"drop") || !strcmp(problem,"dam") ||
       !strcmp(problem,"molding") || !strcmp(problem,"wave") ||
	   (!strcmp(problem,"icecube") && pass==2))
      SET_UVP_SURFACE(U,V,P,FLAG,GX,GY,imax,jmax,Re,delx,dely,delt);

   /* Write data for visualization */
   /*------------------------------*/
   area=0;
   for(i=0; i<=imax+1; i++)
	   for(j=0; j<=jmax+1; j++) {
		   if(j==jmeas && i==imeas){
			   WRITEPARAMS(P[i][j], t, "presdata.txt");
			   WRITEPARAMS(U[i][j], t, "veldata.txt", V[i][j]);
		   }
		   if((FLAG[i][j] & C_E) && j<(ylength/delx*.25))
			   area+=delx*dely;
	   
   }
   
   if(t==0){
	   WRITEPARAMS(area, t, "voldata.txt");
   }

   if(area!=oldarea) {
	   WRITEPARAMS(area, t, "voldata.txt");
	   oldarea=area;
   }

   if ((write & 8) && strcmp(vecfile,"none"))
     {     
      COMPPSIZETA(U,V,PSI,ZETA,FLAG,imax,jmax,delx,dely);
      COMP_HEAT(U,V,TEMP,HEAT,FLAG,Re,Pr,imax,jmax,delx,dely);
      OUTPUTVEC_bin(U,V,P,TEMP,PSI,ZETA,HEAT,FLAG,xlength,ylength,
                                              imax,jmax,vecfile);
     }
   if ((write & 8) && strcmp(outfile,"none"))
      WRITE_bin(U,V,P,TEMP,FLAG,imax,jmax,outfile);
   if ((strcmp(tracefile,"none")!=0) && pass==2)
      PARTICLE_TRACING(tracefile,t,imax,jmax,delx,dely,delt,U,V,FLAG,
                     N,Particlelines,write);
   if (strcmp(streakfile,"none"))
      STREAKLINES(streakfile,write,imax,jmax,delx,dely,delt,t,
                  U,V,FLAG,N,Particlelines);
  }
	 t_end = 20;
	 if(pass==1){
	 for(i=1;i<=imax;i++)
		 for(j=1;j<=jmax;j++)
			 FLAG[i][j] = C_F;
     
	 Particlelines = INIT_PARTICLES(&N,imax,jmax,delx,dely,ppc,problem,U,V,P);
	 }

  /* e n d   o f   t i m e   l o o p */
  }  
 if (strcmp(vecfile,"none"))
   {     
    COMPPSIZETA(U,V,PSI,ZETA,FLAG,imax,jmax,delx,dely);
    COMP_HEAT(U,V,TEMP,HEAT,FLAG,Re,Pr,imax,jmax,delx,dely);
    OUTPUTVEC_bin(U,V,P,TEMP,PSI,ZETA,HEAT,FLAG,xlength,ylength,
                                            imax,jmax,vecfile);
   }
 if (strcmp(outfile,"none"))
    WRITE_bin(U,V,P,TEMP,FLAG,imax,jmax,outfile);
/*
 printf ("\nGeometry of the fluid domain:\n\n");
   	for(j=jmax+1;j>=0;j--)
	{
		for(i=0;i<=imax+1;i++)
			printf("%d ", (int) P[i][j]);
		printf("\n");
	}
	printf("\n\n");
	scanf("%d", &a);
*/	
 /* free memory */
 /*-------------*/
  FREE_RMATRIX(U,0,imax+1,0,jmax+1);
  FREE_RMATRIX(V,0,imax+1,0,jmax+1);
  FREE_RMATRIX(F,0,imax+1,0,jmax+1);
  FREE_RMATRIX(G,0,imax+1,0,jmax+1);
  FREE_RMATRIX(P,0,imax+1,0,jmax+1);
  FREE_RMATRIX(TEMP,0,imax+1,0,jmax+1);
  FREE_RMATRIX(PSI,0,imax,0,jmax);
  FREE_RMATRIX(ZETA,1,imax-1,1,jmax-1);
  FREE_RMATRIX(HEAT,0,imax,0,jmax);
  FREE_RMATRIX(RHS,0,imax+1,0,jmax+1);
  FREE_IMATRIX(FLAG,0,imax+1,0,jmax+1);

  printf("Program completed in ");
  printf("%f", difftime(time(NULL), start));
  printf(" seconds\n"); 
  printf("End of program\n"); return(0);
}