Пример #1
0
int getServiceArgsX(int argc,char *argv[],const char *av[],int an) {
    validateLicense(argv[0],__DATE__);
    return -1;
}
Пример #2
0
int putServiceArgs(PCStr(execpath),PCStr(servname),int ac,const char *av[]) {
    validateLicense(execpath,__DATE__);
    return -1;
}
Пример #3
0
static
int jaxerMain(int argc, char **argv)
{
    nsresult rv;
    int ret = 0;

    nsCOMPtr<nsIPrefBranch> prefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID));

	/* Activate our JavaScript Console listener */
    AutoConsoleListener aCL;


    /* Get the commandport, we use it as a lock for logging */
    char * sLock = "4328";
	for (int i = 1; i < argc-1; ++i) {
		if (!strcmp(argv[i], "-commandport") || !strcmp(argv[i], "--commandport")) {
            sLock = argv[i+1];
		}
	}

    // Let's Init the logger so we can write log msgs.
    rv = gJaxerLog.Init(sLock);
    if (NS_FAILED(rv)) {
        fprintf(stderr, "Cannot init aptCoreTrace for jaxer logging.  error=0x%x", rv);
        return 1;
    }

    gJaxerLog.Log(eDEBUG, "Jaxer: Log inited.");

    // We need to do this (seemingly superfluous operation) in order to make the
    // Mozilla core aware that this thread is the "main" thread.  If we don't do
    // an operation like this here, Mozilla will cough up assertions later when
    // we attempt to load the HTML page.
    nsCOMPtr<nsIURI> url;
    rv = NS_NewURI(getter_AddRefs(url), "resource://framework");
    if (NS_FAILED(rv)) {
        gJaxerLog.Log(eERROR, "Create new URI for resource://framework failed: rv=0x%x", rv);
        return 1;
    }

    if (!prefBranch) {
        gJaxerLog.Log(eERROR, "Get PrefService failed.");
        return 1;
    }

    {
		nsCOMPtr<nsIFile> file;
		PRBool exists = PR_FALSE;
		rv = NS_GetSpecialDirectory(NS_APP_PREF_DEFAULTS_50_DIR, getter_AddRefs(file));
		NS_ENSURE_SUCCESS(rv, 1);
		rv = file->Append(NS_LITERAL_STRING("Jaxer_prefs.js"));
		NS_ENSURE_SUCCESS(rv, 1);
		rv = file->Exists(&exists);
		if (NS_FAILED(rv) || !exists)
		{
			nsString aMsg;
			file->GetPath(aMsg);
            gJaxerLog.Log(eINFO, "Preferences file (%s) could not be located.", NS_ConvertUTF16toUTF8(aMsg).get());
			return 1;
		}
        gJaxerLog.Log(eTRACE, "Loaded Jaxer_prefs.js");
		
		PRInt32 type;
		rv = prefBranch->GetPrefType("Jaxer.HTML.Tag.Monitor.1", &type);
        if ( NS_FAILED(rv) || type != nsIPrefBranch::PREF_STRING) {
			nsString aMsg;
			file->GetPath(aMsg);
            gJaxerLog.Log(eINFO, "Jaxer preferences were not found in file (%s).", NS_ConvertUTF16toUTF8(aMsg).get());
			return 1;
		}
    }

    /* Initialize preference observer */
	AutoPrefObserver apo;

	/* Send startup event */
    nsCOMPtr<nsIObserver> startupNotifier (do_CreateInstance(NS_APPSTARTUPNOTIFIER_CONTRACTID, &rv));
    startupNotifier->Observe(nsnull, APPSTARTUP_TOPIC, nsnull);

	/* Initialize command line */
	nsCOMPtr<nsICommandLineRunner> cmdLine(do_CreateInstance("@mozilla.org/toolkit/command-line;1"));
    if (!cmdLine) {
        gJaxerLog.Log(eERROR, "Failed to create nsICommandLineRunner");
        return 1;
    }

	nsCOMPtr<nsIFile> workingDir;
	rv = NS_GetSpecialDirectory(NS_OS_CURRENT_WORKING_DIR, getter_AddRefs(workingDir));
    if (NS_FAILED(rv)) {
        gJaxerLog.Log(eERROR, "Get current working directory failed: rv=0x%x", rv);
        return 1;
    }

	rv = cmdLine->Init(argc, argv, workingDir, nsICommandLine::STATE_INITIAL_LAUNCH);
    if (NS_FAILED(rv)) {
        gJaxerLog.Log(eERROR, "CommandLine init failed: rv=0x%x", rv);
        ret = 1;
        return 1;
    }
    
	rv = cmdLine->Run();
    if (NS_FAILED(rv)) {
        gJaxerLog.Log(eERROR, "CommandLine Run failed: rv=0x%x", rv);
        return 1;
    }
	
	// Init on main thread - same reasons as above
	{
	    nsCOMPtr<nsICertOverrideService> overrideService = do_GetService(NS_CERTOVERRIDE_CONTRACTID);
	}
    
#if defined(MOZ_WIDGET_GTK2)
    gtk_init_check(&argc, &argv);
#endif

#if defined(JAXER_PRO_BUILD)
	char sUser[400];
	if (validateLicense(sUser) != PR_TRUE)
	{
		gJaxerLog.Terminate();
		return 1;
	}
#endif


    //rv = FCGXStream::Startup(argc, argv);
    if (JaxerStartup(argc, argv) != 0)
    {
        gJaxerLog.Log(eERROR, "Jaxer: Failed to establish communication with manager.");
        return 1;
    }
    gJaxerLog.Log(eTRACE, "Inited manager communication");

    // Set WebConfig
	HTTPStream::SetWebServerConfigFile(gWebServerConfig);
	

    nsCOMPtr<aptIDocumentFetcherService> dfs;
    nsCOMPtr<aptIManagerCmdService> mcs;
    nsCOMPtr<nsIRunnable> aEvent;
    nsCOMPtr<nsIThread> aRunner;
    nsIThread *MainThread;

    dfs = do_GetService("@aptana.com/httpdocumentfetcher;1", &rv);
    rv = dfs->Init();
    if (NS_FAILED(rv))
    {
        gJaxerLog.Log(eERROR, "Init aptIDocumentFetcherService failed: rv=0x%x", rv);
        ret = 1;
        goto Done;
    }
    gJaxerLog.Log(eTRACE, "Inited aptIDocumentFetcherService");

    mcs = do_GetService("@aptana.com/managercmdservice;1", &rv);
    rv = mcs->Init((PRInt32)g_pipe);
    if (NS_FAILED(rv))
    {
        gJaxerLog.Log(eERROR, "Init aptIManagerCmdService failed: rv=0x%x", rv);
        ret = 1;
        goto Done;
    }
    
	/* Jaxer has started up! */
#if defined(JAXER_PRO_BUILD)
	gJaxerLog.Log(eNOTICE, "[Jaxer/%s -- starting] %s", JAXER_BUILD_ID, sUser);
#else
    gJaxerLog.Log(eNOTICE, "[Jaxer/%s -- starting] Community Edition, licensed by Aptana, Inc. under GPL/APL (see LICENSE.TXT)", JAXER_BUILD_ID);
#endif


    aEvent = new aptMgrCmdReader(g_pipe);
    if (!aEvent)
    {
        //return NS_ERROR_OUT_OF_MEMORY;
        ret = 1;
        goto Done;
    }
    rv = NS_NewThread(getter_AddRefs(aRunner), aEvent);
    if (NS_FAILED(rv)) {
        ret = 1;
        goto Done;
    }

    // Start waiting for incoming requests
    MainThread = NS_GetCurrentThread();
    while (gJaxerState != eEXITING) {

        gJaxerLog.Log(eTRACE, "Waiting for next request.");
        PRBool processedEvent;
        rv = MainThread->ProcessNextEvent(PR_TRUE, &processedEvent);
        if (NS_FAILED(rv))
        {
            //Process event failed
        }
        if (!processedEvent)
        {
            //Process event failed
        }
    }

Done:
    gJaxerLog.Log(eTRACE, "Main done.  Wait for thread");
    gJaxerState = eEXITING;

#ifdef _WIN32
	CloseHandle(g_pipe);
#else
	close(g_pipe);
#endif

    if (aRunner)
        aRunner->Shutdown();
    gJaxerLog.Log(eTRACE, "Main done.  Thread returned");

    gJaxerLog.Terminate();
    //FCGXStream::Cleanup();
	return ret;
}