Esempio n. 1
0
bool MCSessionExpireCookie()
{
	MCAutoStringRef t_session_name;
	/* UNCHECKED */ MCS_get_session_name(&t_session_name);
	
	return MCServerSetCookie(*t_session_name, MCSTR("EXPIRE"), MCS_time() - 60 * 60 * 24, nil, nil, false, true);
}
Esempio n. 2
0
bool MCSessionStart(MCStringRef p_session_id, MCSessionRef &r_session)
{
	bool t_success = true;
	
	MCSessionIndexRef t_index = NULL;
	MCSession *t_session = NULL;
	MCSession *t_index_session = NULL;
	
	t_success = MCSessionOpenIndex(t_index);
	
	if (t_success)
	{
		if (p_session_id != NULL  && MCSessionFindMatchingSession(t_index, p_session_id, t_index_session))
		{
			t_success = MCSessionCopySession(t_index_session, t_session);
		}
		else
		{
			t_success = MCSessionCreateSession(t_index, p_session_id, t_session);
		}
		
		MCAutoStringRef t_session_name;
		if (t_success)
			t_success = MCS_get_session_name(&t_session_name);
			
		if (t_success)
		{
			MCAutoStringRef t_session_id_str;
			/* UNCHECKED */ MCStringCreateWithCString(t_session->id, &t_session_id_str);
			t_success = MCServerSetCookie(*t_session_name, *t_session_id_str, 0, nil, nil, false, true);
		}
		
		if (t_success)
			t_success = MCSessionOpenSession(t_index, t_session);
		
		if (t_success)
			MCSessionRefreshExpireTime(t_session);
	}

	if (t_index != NULL)
		t_success &= MCSessionCloseIndex(t_index, t_success);
	
	if (t_success)
		r_session = t_session;
	else
	{
		if (t_session != NULL)
			MCSessionCloseSession(t_session, false);
	}
	
	return t_success;
}
Esempio n. 3
0
Exec_stat MCPut::exec_cookie(MCExecPoint &ep)
{
	char *t_name = NULL;
	char *t_value = NULL;
	char *t_path = NULL;
	char *t_domain = NULL;
	
	uint32_t t_name_len = 0;
	uint32_t t_value_len = 0;
	uint32_t t_path_len = 0;
	uint32_t t_domain_len = 0;
	
	uint32_t t_expires = 0;
	
	bool t_success = true;
	
	
	t_value = ep.getsvalue().clone();
	t_value_len = ep.getsvalue().getlength();
	
	t_success = (ES_NORMAL == name->eval(ep));
	
	if (t_success)
	{
		t_name = ep.getsvalue().clone();
		t_name_len = ep.getsvalue().getlength();
		if (expires != NULL)
			t_success = expires->eval(ep);
	}
	if (t_success && expires)
		t_success = ep.isempty() || MCU_stoui4(ep.getsvalue(), t_expires);
	
	if (t_success && path)
	{
		t_success = path->eval(ep);
		if (t_success)
		{
			t_path = ep.getsvalue().clone();
			t_path_len = ep.getsvalue().getlength();
		}
	}
	
	if (t_success && domain)
	{
		t_success = domain->eval(ep);
		if (t_success)
		{
			t_domain = ep.getsvalue().clone();
			t_domain_len = ep.getsvalue().getlength();
		}
	}
		
	if(t_success)
		t_success = MCServerSetCookie(MCString(t_name, t_name_len), MCString(t_value, t_value_len), t_expires, MCString(t_path, t_path_len), MCString(t_domain, t_domain_len), is_secure, is_httponly);

	MCCStringFree(t_name);
	MCCStringFree(t_value);
	MCCStringFree(t_path);
	MCCStringFree(t_domain);

	if (!t_success)
	{
		MCeerror->add(EE_PUT_CANTSETINTO, line, pos);
		return ES_ERROR;
	}
	ep.clear();
	return ES_NORMAL;
}