Пример #1
0
static int deleteservice(char *account)
{
	SC_HANDLE service, scm;
	int ret=1, i;
	char username[80];

	strcpy(username, account);
	
	parse_username(username);

	sfsprintf(servname, sizeof(servname),"UWIN_CS%s", username);
	sfsprintf(servdname, sizeof(servdname),"UWIN Client(%s)", username);

	for(i=0;i<(signed)strlen(servname);i++)
		if(servname[i] == '/')
			servname[i]= '#';

	scm = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);

	if (scm)
	{
		service = OpenService(scm, servname, SERVICE_ALL_ACCESS);
		if (service)
		{
			if(DeleteService(service))
				logmsg(1, "%s deleted", servdname);
			else
			{
				logerr(LOG_STDERR+0, "delete %s failed", servdname);
				ret = 0;
			}
		}
		else
		{
			logerr(LOG_STDERR+0, "%s service open failed", servdname);
			ret = 0;
		}
		CloseServiceHandle(scm);
	}
	else
	{
		logerr(LOG_STDERR+0, "OpenSCManager failed");
		return(0);
	}

	return(ret);
}
Пример #2
0
void getservname(void)
{
	DWORD ret,i;
	HANDLE tok;
	char tmpbuf[1024], UserName[256], RefDomain[256];
	PTOKEN_USER UserToken = (PTOKEN_USER)tmpbuf;
	DWORD RetLen=1024, UserNameLen, RefDomainLen;
	SID_NAME_USE SidType;

	if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &tok))
	{
		if ((ret = GetTokenInformation(tok, TokenUser, UserToken, RetLen, &RetLen)))
		{
			UserNameLen = sizeof(UserName);
			RefDomainLen = sizeof(RefDomain);
			if ((ret = LookupAccountSid(NULL,UserToken->User.Sid,UserName,&UserNameLen,RefDomain,&RefDomainLen,&SidType)))
			{
				strcat(RefDomain,"/");
				strcat(RefDomain,UserName);
				parse_username(RefDomain);
				sfsprintf(servname, sizeof(servname),"UWIN_CS%s", RefDomain);
				sfsprintf(servdname, sizeof(servdname),"UWIN Client(%s)", RefDomain);
				strcpy(evename,RefDomain);
				strcat(evename,"event");
				for(i=0;i<strlen(servname);i++)
					if(servname[i] == '/')
						servname[i]= '#';
				{
					unsigned char *ptr;
					for(ptr=(unsigned char *)evename; *ptr ; ptr++)
						*ptr=tolower(*ptr);
				}
			}
			else
				logerr(1, "LookupAccountSid failed in getservname");
		}
		else
			logerr(1, "GetTokenInformation failed in getservname");
	}
	else
		logerr(1, "OpenProcessToken failed in getservname");
}
Пример #3
0
/*
 * Parse Digest credentials parameter, one by one
 */
static inline int parse_digest_params(str* _s, dig_cred_t* _c)
{
	char* comma;

	do {
		     /* Parse the first parameter */
		if (parse_digest_param(_s, _c) < 0) {
			return -1;
		}
		
		     /* Try to find the next parameter */
		comma = q_memchr(_s->s, ',', _s->len);
		if (comma) {
			     /* Yes, there is another, 
			      * remove any leading white-spaces
			      * and let _s point to the next
			      * parameter name
			      */
			_s->len -= comma - _s->s + 1;
			_s->s = comma + 1;
			trim_leading(_s);
		}
	} while(comma); /* Repeat while there are next parameters */

	     /* Parse QOP body if the parameter was present */
	if (_c->qop.qop_str.s != 0) {
		parse_qop(&_c->qop);
	}

	     /* Parse algorithm body if the parameter was present */
	if (_c->alg.alg_str.s != 0) {
		parse_algorithm(&_c->alg);
	}

	if (_c->username.whole.s != 0) {
		parse_username(&_c->username);
	}

	return 0;
}