#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/socket.h>
#include<sys/wait.h>
#include<string.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<pthread.h>

#include"zither.h"
#include<almemsys/almemsys.h>
#include"jpreturn.h"


extern global_data_t gd;


/*--------------- SET_LOGIC ------------------- */
int set_logi(private_data_t * pd)
{
static int ret;
int stat;

int ustat = self_memcmp(pd->rec.user, pd->rec.def_user); 
int astat = self_memcmp(pd->rec.user, "administrator");
int cgstat = self_memcmp(pd->rec.user, "cgiuser");

ret = 0; 
if(ustat == 0 && astat != 0 && cgstat != 0){ 
  stat = client_set(pd);

  if(stat == 1){
     ret = socket_send(gd.ms.sk[pd->rec.fdno], "200 OK client set.\n", gd.bs.life_int);
     #ifdef LOG_OUT
     safe_pthread_mutex_lock(&con_mutex);
     log_out(gd.fp.con_fd, pd->rec.user, pd->rec.com, pd->rec.data,
       "200 OK client set.", (unsigned char *)gd.ms.inip_addr[pd->rec.fdno]);
     pthread_mutex_unlock(&con_mutex);
     #endif
     }
  else{
     ret = socket_send(gd.ms.sk[pd->rec.fdno], "500 NG Not client set.\n", gd.bs.life_int);
     #ifdef LOG_OUT
     safe_pthread_mutex_lock(&con_mutex);
     log_out(gd.fp.con_fd, pd->rec.user, pd->rec.com, pd->rec.data,
       "500 NG Not client set.", (unsigned char *)gd.ms.inip_addr[pd->rec.fdno]);
     pthread_mutex_unlock(&con_mutex);
     #endif
     }
  }
else{
  ret = socket_send(gd.ms.sk[pd->rec.fdno], "500 NG No permit.\n", gd.bs.life_int);
  #ifdef LOG_OUT
  safe_pthread_mutex_lock(&con_mutex);
  log_out(gd.fp.con_fd, pd->rec.user, pd->rec.com, pd->rec.data,
    "500 NG No permit.", (unsigned char *)gd.ms.inip_addr[pd->rec.fdno]);
  pthread_mutex_unlock(&con_mutex);
  #endif
  } 
return(ret);
}







