NS_IMETHODIMP
nsEmbedChromeRegistry::Canonify(nsIURI* aChromeURI)
{
#if 1
  // Canonicalize 'chrome:' URLs. We'll take any 'chrome:' URL
  // without a filename, and change it to a URL -with- a filename;
  // e.g., "chrome://navigator/content" to
  // "chrome://navigator/content/navigator.xul".
  if (! aChromeURI)
      return NS_ERROR_NULL_POINTER;

  PRBool modified = PR_TRUE; // default is we do canonification
  nsCAutoString package, provider, file;
  nsresult rv;
  rv = SplitURL(aChromeURI, package, provider, file, &modified);
  if (NS_FAILED(rv))
    return rv;

  if (!modified)
    return NS_OK;

  nsCAutoString canonical( kChromePrefix );
  canonical += package;
  canonical += "/";
  canonical += provider;
  canonical += "/";
  canonical += file;

  return aChromeURI->SetSpec(canonical);
#else
  return NS_OK;
#endif
}
Ejemplo n.º 2
0
int HttpClient::getUrl(const char* url)
{
    if(!url || !*url || !m_times)
        return 0;

    StringBuffer protocol, user, passwd, port, path;
    m_host.clear();
    SplitURL(url, protocol, user, passwd, m_host, port, path);

    if(port.length() > 0)
        m_port = atoi(port.str());
    else
    {
        if(protocol.length() > 0 && stricmp(protocol.str(), "https") == 0)
            m_port = 443;
        else
            m_port = 80;
    }

    if(stricmp(protocol.str(), "HTTPS") == 0)
        m_use_ssl = true;

    if(m_use_ssl)
    {
#if USE_OPENSSL
        if(m_ssctx.get() == NULL)
            m_ssctx.setown(createSecureSocketContext(ClientSocket));
#else
        throw MakeStringException(-1, "HttpClient: failure to create SSL socket - OpenSSL not enabled in build");
#endif
    }

    StringBuffer request;
    request.appendf("GET %s HTTP/1.0\r\n", path.str());
    request.append("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n");
    request.append("Accept-Language: en-us\r\n");
    //request.append("Accept-Encoding: gzip, deflate\r\n");
    request.append("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n");
    request.append("Host: ").append(m_host.str());
    if(m_port != 80)
        request.appendf(":%d", m_port);
    request.append("\r\n");
    if(user.length() > 0)
    {
        StringBuffer auth, abuf;
        abuf.appendf("%s:%s", user.str(), passwd.str());
        JBASE64_Encode(abuf.str(), abuf.length(), auth);
        request.appendf("Authorization: Basic %s\r\n", auth.str());
    }
    request.append("\r\n");

    return sendRequest(request);
}
Ejemplo n.º 3
0
int HTTP::Request_Post(const char* url, const void* data, int size, float timeOut)
	{
	// Create new request entry, and add it to list of request entries
	Request* request=new Request;
	currentRequestHandle_++;
	request->handle=currentRequestHandle_;
	request->usingGetMethod=false;
	request->status=Status_Connecting;
	request->timeOut_=timeOut;
	request->elapsedTime_=0;
	request->connection=0;
	request->requestString=0;
	request->contentLength=0;
	request->resource=0;
	request->postData.Write(static_cast<const char*>(data),size);
	requests_.Add(request);

	// Make sure URL starts with http://
	if (StrNICmp(url,"http://",7)!=0)
		{
		request->status=Status_Failed;
		return request->handle;
		}

	// Split URL string
	char* address=0;
	char* port=0;
	char* requestString=0;
	SplitURL(url,address,port,requestString);

	// Create connection
	if (Platform::GetPlatform_Network())
		{
		request->connection=Platform::GetPlatform_Network()->CreateClient(Platform_Network::ConnectionMode_TCP,address,StringToInt(port));
		}
	if (!request->connection->Connect())
		{
		request->status=Status_Failed;
		}

	// Store request string
	request->requestString=StrDup(requestString);

	// Clean up after SplitURL
	delete[] requestString;
	delete[] port;
	delete[] address;

	// Return handle to this request
	return request->handle;
	}
Ejemplo n.º 4
0
int TcpTransport::Connect(const std::string &strServerURL)
{
	if (m_state == CLIENT_STATE_UNINIT)
	{
		return CLIENT_ERROR_INIT;
	}

	if (IsConnected())
	{
		if (strServerURL.compare(m_serverURL) == 0)
		{
			return CLIENT_ERROR_SUCCESS;
		}
		else
		{
			Close();
		}
	}

	short port;
	std::string strAddr;

	if (!SplitURL(strServerURL, strAddr, port))
	{
		return CLIENT_ERROR_INVALID_URL;
	}

	struct sockaddr_in sa;
	sa.sin_family = AF_INET;
	sa.sin_port = htons(port);

	sa.sin_addr.s_addr = inet_addr(strAddr.c_str());




	m_sfd = (int)socket(AF_INET, SOCK_STREAM, 0);

	if (SetTcpNoDelay(m_sfd) == -1)
	{
		closesocket(m_sfd);
		return CLIENT_ERROR_CONNECT;
	}

	// handshake SSL.


	if (MakeSocketNonblocking(m_sfd) == -1)
	{
		return CLIENT_ERROR_CONNECT;
	}
	
	if (!enableSSL && connect(m_sfd,(struct sockaddr*)&sa, sizeof(sockaddr)) == -1)
	{
		int err = NET_ERROR;
		if (err == WSAEWOULDBLOCK || err == WSAEINPROGRESS)
		{
			fd_set wfd;
			fd_set exceptfds;

			FD_ZERO(&wfd);
			FD_ZERO(&exceptfds);
			FD_SET(m_sfd,&wfd);
			FD_SET(m_sfd, &exceptfds);

			struct timeval tv = {5, 0};

			if (select(FD_SETSIZE, NULL, &wfd, &exceptfds, &tv) == -1)
			{
				closesocket(m_sfd);
				return CLIENT_ERROR_CONNECT;
			}

			if (!FD_ISSET(m_sfd,&wfd))
			{
				closesocket(m_sfd);
				return CLIENT_ERROR_CONNECT;
			}

#ifndef WIN32

			int opterr = 0;
			socklen_t errlen = sizeof(opterr);
			if (getsockopt(m_sfd,SOL_SOCKET, SO_ERROR, &opterr, &errlen) == -1)
			{
				closesocket(m_sfd);
				return CLIENT_ERROR_CONNECT;
			}

			if (opterr)
			{
				closesocket(m_sfd);
				return CLIENT_ERROR_CONNECT;
			}
#endif
		}
		else
		{
			return CLIENT_ERROR_CONNECT;
		}
	}

	m_serverURL = strServerURL;
    m_state = CLIENT_STATE_CONNECTED;
	m_recvBufUsed = 0;

	return CLIENT_ERROR_SUCCESS;
}
Ejemplo n.º 5
0
int main(int argc,char **argv)
{
 URL *Url;
 URL **list,*refresh;
 int j;

 if(argc==1)
   {fprintf(stderr,"usage: test-doc URL < contents-of-url\n");return(1);}

 StderrLevel=ExtraDebug;

 InitErrorHandler("test-doc",0,1);

 InitConfigurationFile("./wwwoffle.conf");

 init_io(STDERR_FILENO);

 if(ReadConfigurationFile(STDERR_FILENO))
    PrintMessage(Fatal,"Error in configuration file 'wwwoffle.conf'.");

 finish_io(STDERR_FILENO);

 Url=SplitURL(argv[1]);

 init_io(0);

 ParseDocument(0,Url,1);

 if((refresh=GetReference(RefMetaRefresh)))
    printf("Refresh = %s\n",refresh->file);

 if((list=GetReferences(RefStyleSheet)))
    for(j=0;list[j];j++)
       printf("StyleSheet = %s\n",list[j]->file);

 if((list=GetReferences(RefImage)))
    for(j=0;list[j];j++)
       printf("Image = %s\n",list[j]->file);

 if((list=GetReferences(RefFrame)))
    for(j=0;list[j];j++)
       printf("Frame = %s\n",list[j]->file);

 if((list=GetReferences(RefScript)))
    for(j=0;list[j];j++)
       printf("Script = %s\n",list[j]->file);

 if((list=GetReferences(RefObject)))
    for(j=0;list[j];j++)
       printf("Object = %s\n",list[j]->file);

 if((list=GetReferences(RefInlineObject)))
    for(j=0;list[j];j++)
       printf("InlineObject = %s\n",list[j]->file);

 if((list=GetReferences(RefLink)))
    for(j=0;list[j];j++)
       printf("Link = %s\n",list[j]->file);

 FreeURL(Url);

 finish_io(0);

 return(0);
}
Ejemplo n.º 6
0
int HttpClient::sendSoapRequest(const char* url, const char* soapaction, const char* infile)
{
    if(!url || !*url || !infile || !*infile)
        return 0;

    StringBuffer protocol, user, passwd, port, path;
    m_host.clear();
    SplitURL(url, protocol, user, passwd, m_host, port, path);

    if(port.length() > 0)
        m_port = atoi(port.str());
    else
    {
        if(protocol.length() > 0 && stricmp(protocol.str(), "https") == 0)
            m_port = 443;
        else
            m_port = 80;
    }

    if(stricmp(protocol.str(), "HTTPS") == 0)
        m_use_ssl = true;

    if(m_use_ssl)
    {
#ifdef USE_OPENSSL
        if(m_ssctx.get() == NULL)
            m_ssctx.setown(createSecureSocketContext(ClientSocket));
#else
        throw MakeStringException(-1, "HttpClient: failure to create SSL socket - OpenSSL not enabled in build");
#endif
    }

    StringBuffer request;

    try
    {
        request.loadFile(infile, true);
    }
    catch(IException* e)
    {
        StringBuffer errmsg;
        printf("\nerror loading file %s - %s", infile, e->errorMessage(errmsg).str());
        return -1;
    }
    catch(...)
    {
        printf("\nerror loading file %s", infile);
        return -1;
    }

    if(request.length() == 0)
    {
        printf("input is empty\n");
        return -1;
    }


    const char* ptr = request.str();
    while(*ptr == ' ')
        ptr++;
    if(*ptr != '<')
    {
        printf("the input should be xml\n");
        return -1;
    }

    if(strncmp(ptr, "<?xml", 5) != 0 && strncmp(ptr, "<soap:Envelope", 14) != 0)
    {
        request.insert(0, "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:wsse=\"http://schemas.xmlsoap.org/ws/2002/04/secext\"><soap:Body>");
        request.append("</soap:Body></soap:Envelope>");
    }

    StringBuffer headers;

    headers.appendf("POST %s HTTP/1.1\r\n", path.str());
    headers.append("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n");
    headers.append("Accept-Language: en-us\r\n");
    headers.append("Content-Type: text/xml\r\n");
    if(soapaction && *soapaction)
        headers.appendf("SOAPAction: \"%s\"\r\n", soapaction);
    //headers.append("Accept-Encoding: gzip, deflate\r\n");
    headers.append("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n");
    headers.appendf("Content-Length: %d\r\n", request.length());
    headers.append("Host: ").append(m_host.str());
    if(m_port != 80)
        headers.appendf(":%d", m_port);
    headers.append("\r\n");

    if(user.length() > 0)
    {
        StringBuffer auth, abuf;
        abuf.appendf("%s:%s", user.str(), passwd.str());
        JBASE64_Encode(abuf.str(), abuf.length(), auth);
        headers.appendf("Authorization: Basic %s\r\n", auth.str());
    }

    headers.append("\r\n");


    request.insert(0, headers.str());

    return sendRequest(request);
}
Ejemplo n.º 7
0
static void UpdateList(openfile* p, bool_t Silent, int ListMode)
{
	streamdir DirItem;
	stream* Stream;
	int Result;
	openitem New;
	LVITEM Item;
	int No=0;
	int Pos=0;
	int State = LVIS_FOCUSED;
	int Len;
	const tchar_t* s;
	bool_t HasHost;

	if (!p->Multiple || (p->Flags & OPENFLAG_SINGLE))
		State |= LVIS_SELECTED; 

	Len = tcslen(p->Path);
	if (Len && (p->Path[Len-1] == '\\' || p->Path[Len-1] == '/'))
		p->Path[--Len] = 0;

	tcscpy_s(p->Base,TSIZEOF(p->Base),p->Path);
	s = p->Path[0] ? p->Path : T("\\");
	AddHistory(p,s);

	if (!ListMode)
		return;

	++p->InUpdate;
	WaitBegin();

	ShowWindow(p->WndList,SW_HIDE);
	ClearList(p);

	Item.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
	Item.pszText=T("");
	Item.cchTextMax=1;
	Item.iSubItem=0;

	Stream = GetStream(p->Path,Silent);

	if (Stream)
	{
		s = GetMime(p->Path,NULL,0,&HasHost);
		if (*s)
		{
			Item.iImage=IMG_DIRUP;
			Item.iItem = No;
			Item.lParam = 0;

			ListView_InsertItem(p->WndList,&Item);
			ListView_SetItemText(p->WndList,No,0,T(".."));
			ListView_SetItemText(p->WndList,No,1,(tchar_t*)LangStr(OPENFILE_ID,OPENFILE_UP));
			++No;
		}

		Result = Stream->EnumDir(Stream,p->Path,p->Exts,*p->CurrentFileType!=-1,&DirItem);

		if (ListMode==2 && Result == ERR_FILE_NOT_FOUND && UpperPath(p->Path,p->Last,TSIZEOF(p->Last)))
		{
			WaitEnd();
			--p->InUpdate;

			p->LastClick = -1;
			UpdateList(p,Silent,ListMode);
			return;
		}

		if (Result == ERR_NOT_DIRECTORY && !Silent)
		{
			New.FileName[0] = 0;
			New.Ext[0] = 0;
			New.Image = IMG_FILE;
			New.Size = 0;

			Item.lParam = (DWORD)malloc(sizeof(openitem));
			if (Item.lParam)
			{
				p->Last[0] = 0;
				Pos = No;
				State = LVIS_SELECTED;
				PostMessage(p->Win.Wnd,WM_COMMAND,PLATFORM_OK,0);

				*(openitem*)Item.lParam = New;
				Item.iItem = No;
				Item.iImage = New.Image;
				ListView_InsertItem(p->WndList,&Item);
				++No;
			}
		}

		if (Result == ERR_NONE)
			Stream->Get(Stream,STREAM_BASE,p->Base,sizeof(p->Base));

		while (Result == ERR_NONE)
		{
			tchar_t Size[32];
			tchar_t Date[32];

			int i;
			for (i=0;i<No;++i)
			{
				LVITEM Item;
				Item.iItem=i;
				Item.iSubItem = 0;
				Item.mask=LVIF_PARAM;
				ListView_GetItem(p->WndList,&Item);

				if (Item.lParam && tcscmp(((openitem*)Item.lParam)->FileName,DirItem.FileName)==0)
					break;
			}

			if (i==No)
			{
				tchar_t DisplayName[MAXPATH];
				tcscpy_s(New.FileName,TSIZEOF(New.FileName),DirItem.FileName);
				New.DisplayName = DirItem.DisplayName[0] != 0;
				tcscpy_s(DisplayName,TSIZEOF(DisplayName),New.DisplayName?DirItem.DisplayName:DirItem.FileName);
				Size[0] = 0;
				Date[0] = 0;

				if (DirItem.Size < 0)
				{
					New.Image = IMG_DIR;
					New.Size = 0;
					New.Date = 0;
					tcscpy_s(New.Ext,TSIZEOF(New.Ext),LangStr(OPENFILE_ID,OPENFILE_DIR));
					tcscpy_s(New.Name,TSIZEOF(New.Name),DisplayName); //keep extension
				}
				else
				{
					switch (DirItem.Type)
					{
					case FTYPE_AUDIO: New.Image = IMG_AUDIO; break;
					case FTYPE_PLAYLIST: New.Image = IMG_PLAYLIST; break;
					case FTYPE_VIDEO: New.Image = IMG_VIDEO; break;
					default: New.Image = IMG_FILE; break;
					}
					New.Size = DirItem.Size;
					New.Date = DirItem.Date;

					SplitURL(DisplayName,NULL,0,NULL,0,New.Name,TSIZEOF(New.Name),New.Ext,TSIZEOF(New.Ext));
					tcsupr(New.Ext);
					if (New.Size >= 0)
					{
						if (New.Size < 10000*1024)
							stprintf_s(Size,TSIZEOF(Size),T("%d KB"),New.Size/1024);
						else
							stprintf_s(Size,TSIZEOF(Size),T("%d MB"),New.Size/(1024*1024));
					}
					if (New.Date >= 0)
					{
						FILETIME Time;
						SYSTEMTIME SysTime;
						Time.dwHighDateTime = (DWORD)(New.Date >> 32);
						Time.dwLowDateTime = (DWORD)(New.Date);
						if (FileTimeToSystemTime(&Time,&SysTime))
							GetDateFormat(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&SysTime,NULL,Date,TSIZEOF(Date));
					}
				}
		
				Item.lParam = (DWORD)malloc(sizeof(openitem));
				if (Item.lParam)
				{
					*(openitem*)Item.lParam = New;
					Item.iItem = No;
					Item.iImage = New.Image;
					ListView_InsertItem(p->WndList,&Item);
					ListView_SetItemText(p->WndList,No,0,New.Name);
					ListView_SetItemText(p->WndList,No,1,New.Ext);
					ListView_SetItemText(p->WndList,No,2,Size);
					ListView_SetItemText(p->WndList,No,3,Date);
					++No;
				}
			}

			Result = Stream->EnumDir(Stream,NULL,NULL,0,&DirItem);
		}
void TServerDeviceGlobals::OnInitialize()
{
	// SSL
	{
		SSL_load_error_strings();

		SSL_library_init();

		srand(time(0));

		m_pSSLContext = SSL_CTX_new(SSLv23_client_method());

		if(m_pSSLContext == NULL)
			INITIATE_DEFINED_FAILURE(TEXT("Error creating SSL context."));
	}

	// Cfg
	{
		TStructuredInfo Info(CFG_FILENAME);

		// Networking
		{
			TInfoNodeConstIterator Node =
				Info.GetNode(Info.GetRootNode(), TEXT("Networking"));

			ReadUINT(	Node->GetParameterValue(TEXT("Port")),
						m_szTCPPort,
						TEXT("network port"));

			ReadUINT(	Node->GetParameterValue(TEXT("SocketDelay")),
						m_szSocketDelay,
						TEXT("socket delay"));
		}

		// Authentication
		{
			TInfoNodeConstIterator Node =
				Info.GetNode(Info.GetRootNode(), TEXT("Authentication"));

			m_AuthURL = Node->GetParameterValue(TEXT("AuthURL"));
			
			m_PostReplyURL = Node->GetParameterValue(TEXT("PostReplyURL"));

			m_AuthResultString = Node->GetParameterValue(TEXT("AuthResultString"));

			KString Protocol, Address, Resource;

			SplitURL(m_AuthURL, Protocol, Address, Resource);

			if(!IsSupportedHTTPProtocol(Protocol))
				INITIATE_DEFINED_FAILURE(TEXT("Unsupported authorization URL protocol."));

			SplitURL(m_PostReplyURL, Protocol, Address, Resource);

			if(!IsSupportedHTTPProtocol(Protocol))
				INITIATE_DEFINED_FAILURE(TEXT("Unsupported post-reply URL protocol."));
		}
	}

	// Cypher
	{
		m_ServerKey.Generate(RSA_KEY_LENGTH);

		TModuleResource Resource(	GetKModuleHandle(),
									RT_RCDATA,
									MAKEINTRESOURCE(IDR_DATA1));

		TMemoryStream Stream(TArrayAllocation(1024, 1024));

		Stream.StreamWrite(Resource.GetDataPtr(), Resource.GetSize());

		m_CertKey.LoadAll(Stream);
	}

	// OCR
	{
		// Loading DLL
		m_OCR_DLL.Allocate(g_StartUpGlobals.m_StartFolder + OCR_DLL_FILENAME);

		// Getting functions
		g_pLoadDictionary =
			(TLoadDictionary*)m_OCR_DLL.GetFunction("loadDictionary");

		g_pLoadModel =
			(TLoadModel*)m_OCR_DLL.GetFunction("loadModel");

		g_pGetString =
			(TGetString*)m_OCR_DLL.GetFunction("getString");

		// Initializing library
		g_pLoadDictionary(g_StartUpGlobals.m_StartFolder + "dict.txt");

		g_pLoadModel(g_StartUpGlobals.m_StartFolder + "model.txt");
	}
}
Ejemplo n.º 9
0
static void MonitorFormParse(int fd,URL *Url,char *request_args,Body *request_body)
{
 int i,mfd=-1;
 char **args,*url=NULL;
 URL *monUrl;
 char mofy[13]="NNNNNNNNNNNN",*dofm=NULL,dofw[8]="NNNNNNN",*hofd=NULL;
 char MofY[13],DofM[32],DofW[8],HofD[25];

 if(!request_args && !request_body)
   {
    HTMLMessage(fd,404,"WWWOFFLE Monitor Form Error",NULL,"MonitorFormError",
                "body",NULL,
                NULL);
    return;
   }

 if(request_body)
   {
    char *form=URLRecodeFormArgs(request_body->content);
    args=SplitFormArgs(form);
    free(form);
   }
 else
    args=SplitFormArgs(request_args);

 for(i=0;args[i];i++)
   {
    if(!strncmp("url=",args[i],(size_t)4))
       url=TrimArgs(URLDecodeFormArgs(args[i]+4));
    else if(!strncmp("mofy1=",args[i],(size_t)6))
       mofy[0]=args[i][6];
    else if(!strncmp("mofy2=",args[i],(size_t)6))
       mofy[1]=args[i][6];
    else if(!strncmp("mofy3=",args[i],(size_t)6))
       mofy[2]=args[i][6];
    else if(!strncmp("mofy4=",args[i],6))
       mofy[3]=args[i][6];
    else if(!strncmp("mofy5=",args[i],(size_t)6))
       mofy[4]=args[i][6];
    else if(!strncmp("mofy6=",args[i],(size_t)6))
       mofy[5]=args[i][6];
    else if(!strncmp("mofy7=",args[i],(size_t)6))
       mofy[6]=args[i][6];
    else if(!strncmp("mofy8=",args[i],(size_t)6))
       mofy[7]=args[i][6];
    else if(!strncmp("mofy9=",args[i],(size_t)6))
       mofy[8]=args[i][6];
    else if(!strncmp("mofy10=",args[i],(size_t)7))
       mofy[9]=args[i][7];
    else if(!strncmp("mofy11=",args[i],(size_t)7))
       mofy[10]=args[i][7];
    else if(!strncmp("mofy12=",args[i],(size_t)7))
       mofy[11]=args[i][7];
    else if(!strncmp("dofm=",args[i],(size_t)5))
       dofm=args[i]+5;
    else if(!strncmp("dofw0=",args[i],(size_t)6))
       dofw[0]=args[i][6];
    else if(!strncmp("dofw1=",args[i],(size_t)6))
       dofw[1]=args[i][6];
    else if(!strncmp("dofw2=",args[i],(size_t)6))
       dofw[2]=args[i][6];
    else if(!strncmp("dofw3=",args[i],(size_t)6))
       dofw[3]=args[i][6];
    else if(!strncmp("dofw4=",args[i],(size_t)6))
       dofw[4]=args[i][6];
    else if(!strncmp("dofw5=",args[i],(size_t)6))
       dofw[5]=args[i][6];
    else if(!strncmp("dofw6=",args[i],(size_t)6))
       dofw[6]=args[i][6];
    else if(!strncmp("hofd=",args[i],(size_t)5))
       hofd=args[i]+5;
    else
       PrintMessage(Warning,"Unexpected argument '%s' seen decoding form data for URL '%s'.",args[i],Url->name);
   }

 if(url==NULL || *url==0)
   {
    HTMLMessage(fd,404,"WWWOFFLE Monitor Form Error",NULL,"MonitorFormError",
                "body",request_body?request_body->content:request_args,
                NULL);
    if(url) free(url);
    free(args[0]);
    free(args);
    return;
   }

 monUrl=SplitURL(url);
 free(url);

 /* Parse the requested time */

 strcpy(MofY,"000000000000");
 for(i=0;i<12;i++)
    if(mofy[i]=='Y')
       MofY[i]='1';

 if(!dofm || !*dofm)
    strcpy(DofM,"1111111111111111111111111111111");
 else
   {
    int d,any=0,range=0,lastd=0;
    char *p=dofm;
    strcpy(DofM,"0000000000000000000000000000000");

    while(*p)
      {
       while(*p && !isdigit(*p))
         {
          if(*p=='*')
            {
             strcpy(DofM,"1111111111111111111111111111111");
             any=1;
            }
          if(*p=='-')
             range=1;
          p++;
         }
       if(!*p)
          break;
       d=atoi(p)-1;
       if(range)
         {
          if(d>30)
             d=30;
          for(;lastd<=d;lastd++)
             DofM[lastd]='1';
          range=0;
          any++;
         }
       else if(d>=0 && d<31)
         {
          DofM[d]='1';
          any++;
          lastd=d;
         }
       while(isdigit(*p))
          p++;
      }

    if(range)
       for(;lastd<=30;lastd++)
          DofM[lastd]='1';
    else
       if(!any)
          strcpy(DofM,"1111111111111111111111111111111");
   }

 strcpy(DofW,"0000000");
 for(i=0;i<7;i++)
    if(dofw[i]=='Y')
       DofW[i]='1';

 if(!hofd || !*hofd)
    strcpy(HofD,"100000000000000000000000");
 else
   {
    int h,any=0,range=0,lasth=0;
    char *p=hofd;
    strcpy(HofD,"000000000000000000000000");

    while(*p)
      {
       while(*p && !isdigit(*p))
         {
          if(*p=='*')
            {
             strcpy(HofD,"111111111111111111111111");
             any=1;
            }
          if(*p=='-')
             range=1;
          p++;
         }
       if(!*p)
          break;
       h=atoi(p);
       if(range)
         {
          if(h>23)
             h=23;
          for(;lasth<=h;lasth++)
             HofD[lasth]='1';
          range=0;
          any++;
         }
       else if(h>=0 && h<24)
         {
          HofD[h]='1';
          any++;
          lasth=h;
         }
       while(isdigit(*p))
          p++;
      }

    if(range)
       for(;lasth<=23;lasth++)
          HofD[lasth]='1';
    else
       if(!any)
          strcpy(HofD,"100000000000000000000000");
   }

 mfd=CreateMonitorSpoolFile(monUrl,MofY,DofM,DofW,HofD);

 if(mfd==-1)
    HTMLMessage(fd,500,"WWWOFFLE Server Error",NULL,"ServerError",
                "error","Cannot open file to store monitor request",
                NULL);
 else
   {
    Header *new_request_head=RequestURL(monUrl,NULL);
    char *head=HeaderString(new_request_head);

    init_io(mfd);

    write_string(mfd,head);

    finish_io(mfd);
    close(mfd);

    HTMLMessage(fd,200,"WWWOFFLE Monitor Will Get",NULL,"MonitorWillGet",
                "url",monUrl->name,
                NULL);

    free(head);
    FreeHeader(new_request_head);
   }

 free(args[0]);
 free(args);

 FreeURL(monUrl);
}
Ejemplo n.º 10
0
static void MonitorFormShow(int fd,char *request_args)
{
 char MofY[13],DofM[32],DofW[8],HofD[25];
 char dofmstr[128],hofdstr[64],*p;
 char *url=NULL;
 int i,exists=0;

 if(request_args)
    url=URLDecodeFormArgs(request_args);

 if(url)
   {
    URL *monUrl=SplitURL(url);
    exists=ReadMonitorTimesSpoolFile(monUrl,MofY,DofM,DofW,HofD);
    FreeURL(monUrl);
   }
 else
   {
    strcpy(MofY,"111111111111");
    strcpy(DofM,"1111111111111111111111111111111");
    strcpy(DofW,"1111111");
    strcpy(HofD,"100000000000000000000000");
   }

 if(!strcmp(DofM,"1111111111111111111111111111111"))
    strcpy(dofmstr,"*");
 else
   {
    *dofmstr=0;
    p=dofmstr;
    for(i=0;i<31;i++)
       if(DofM[i]=='1')
         {
          sprintf(p,"%d ",i+1);
          p+=strlen(p);
         }
   }

 if(!strcmp(HofD,"100000000000000000000000"))
    strcpy(hofdstr,"0");
 else
   {
    *hofdstr=0;
    p=hofdstr;
    for(i=0;i<24;i++)
       if(HofD[i]=='1')
         {
          sprintf(p,"%d ",i);
          p+=strlen(p);
         }
   }

 HTMLMessage(fd,200,"WWWOFFLE Monitor Page",NULL,"MonitorPage",
             "url",url,
             "exists",exists==0?NULL:"Yes",
             "mofy1",MofY[0]=='1'?"Yes":NULL,
             "mofy2",MofY[1]=='1'?"Yes":NULL,
             "mofy3",MofY[2]=='1'?"Yes":NULL,
             "mofy4",MofY[3]=='1'?"Yes":NULL,
             "mofy5",MofY[4]=='1'?"Yes":NULL,
             "mofy6",MofY[5]=='1'?"Yes":NULL,
             "mofy7",MofY[6]=='1'?"Yes":NULL,
             "mofy8",MofY[7]=='1'?"Yes":NULL,
             "mofy9",MofY[8]=='1'?"Yes":NULL,
             "mofy10",MofY[9]=='1'?"Yes":NULL,
             "mofy11",MofY[10]=='1'?"Yes":NULL,
             "mofy12",MofY[11]=='1'?"Yes":NULL,
             "dofm",dofmstr,
             "dofw0",DofW[0]=='1'?"Yes":NULL,
             "dofw1",DofW[1]=='1'?"Yes":NULL,
             "dofw2",DofW[2]=='1'?"Yes":NULL,
             "dofw3",DofW[3]=='1'?"Yes":NULL,
             "dofw4",DofW[4]=='1'?"Yes":NULL,
             "dofw5",DofW[5]=='1'?"Yes":NULL,
             "dofw6",DofW[6]=='1'?"Yes":NULL,
             "hofd",hofdstr,
             NULL);

 if(url)
    free(url);
}