int main(int argc, char **argv)
{
    if(argc<3)
    {
        std::cout<<"usage : register_profile [context] [name]"<<std::endl;
        return 1;
    }

    Ethereum::Connector::Provider provider;
    provider.connect(Ethereum::Connector::Test_Net);
    std::string password = PromptPassword();

    BitProfile::MasterRegistrar master(provider, BitProfile::Test_Net);

    std::cout<<"beta : "<<master.isBeta()<<std::endl;
    std::cout<<"master size : "<<master.getSize()<<std::endl;

    BitProfile::Registrar regisrar = master.get(boost::lexical_cast<size_t>(argv[1]));
    if(regisrar.isNull())
    {
        std::cout<<"invalid registrar : "<<argv[1]<<std::endl;
        return 2;
    }

    BitProfile::ProfileAdministrator profile = BitProfile::ProfileAdministrator::CreateProfile(regisrar, argv[2], password);

    if(profile.isNull())
    {
        std::cout<<"failed to register profile"<<std::endl;
    }
    else
    {
        std::cout<<"profile registered"<<std::endl;
        BitProfile::ProfileStore store(BitProfile::Test_Net);
        if(store.insert(BitProfile::ProfileDescriptor(profile)))
        {
            std::cout<<"profile saved"<<std::endl;
        }
        else
        {
            std::cout<<"failed to save profile"<<std::endl;
        }
    }


    return 0;
}
示例#2
0
static
DWORD
ParseLeaveArgs(
    IN int argc,
    IN const char *argv[],
    OUT PLEAVE_ARGS pArgs
    )
{
    DWORD dwError = 0;
    PCSTR programName = NULL;
    PCSTR option = NULL;
    LW_ARGV_CURSOR cursor;
    SHOW_USAGE_CALLBACK ShowUsageHelp = ShowLeaveUsageHelp;
    SHOW_USAGE_CALLBACK ShowUsageError = ShowLeaveUsageError;

    memset(pArgs, 0, sizeof(*pArgs));

    LwArgvCursorInit(&cursor, argc, argv);
    programName = LwArgvCursorPop(&cursor);

    // Process options:
    for (;;)
    {
        option = PopNextOption(&cursor);
        if (!option)
        {
            break;
        }
        else if (IsHelpOption(option))
        {
            ShowUsageHelp(programName);
        }
        else if (!strcmp("--multiple", option))
        {
            SetFlag(pArgs->JoinFlags, LSA_NET_JOIN_DOMAIN_MULTIPLE);

            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszDomain);
            GOTO_CLEANUP_ON_WINERROR(dwError);

            LwStrToUpper(pArgs->pszDomain);
        }
        else
        {
            fprintf(stderr, "Unrecognized option: %s\n", option);
            ShowUsageError(programName);
        }
    }

    // Optional arguments
    dwError = GetArgumentValue(programName, ShowUsageError, &cursor, NULL,
                               &pArgs->pszUsername);
    assert(!dwError);
    dwError = GetArgumentValue(programName, ShowUsageError, &cursor, NULL,
                               &pArgs->pszPassword);
    assert(!dwError);

    if (LwArgvCursorRemaining(&cursor))
    {
        fprintf(stderr, "Too many arguments.\n");
        ShowUsageError(programName);
    }

    // Initialize implicit domain argument.
    if (!pArgs->pszDomain)
    {
        dwError = GetCurrentDomain(&pArgs->pszDomain);
        if (NERR_SetupNotJoined == dwError)
        {
            fprintf(stderr, "The computer is not joined to a domain.\n");
            exit(1);
        }
        GOTO_CLEANUP_ON_WINERROR(dwError);
    }

    // If USERNAME was specified, clean it up and get password
    // as needed.
    if (pArgs->pszUsername)
    {
        dwError = CleanupUsername(pArgs->pszDomain, &pArgs->pszUsername);
        GOTO_CLEANUP_ON_WINERROR(dwError);

        if (!pArgs->pszPassword)
        {
            dwError = PromptPassword(pArgs->pszUsername, &pArgs->pszPassword);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
    }

cleanup:
    if (dwError)
    {
        FreeLeaveArgsContents(pArgs);
    }

    return dwError;
}
示例#3
0
static
DWORD
ParseJoinArgs(
    IN int argc,
    IN const char *argv[],
    OUT PJOIN_ARGS pArgs
    )
{
    DWORD dwError = 0;
    PCSTR programName = NULL;
    PCSTR option = NULL;
    LW_ARGV_CURSOR cursor;
    SHOW_USAGE_CALLBACK ShowUsageHelp = ShowJoinUsageHelp;
    SHOW_USAGE_CALLBACK ShowUsageError = ShowJoinUsageError;

    memset(pArgs, 0, sizeof(*pArgs));

    LwArgvCursorInit(&cursor, argc, argv);
    programName = LwArgvCursorPop(&cursor);

    // Process options:
    for (;;)
    {
        option = PopNextOption(&cursor);
        if (!option)
        {
            break;
        }
        else if (IsHelpOption(option))
        {
            ShowUsageHelp(programName);
        }
        else if (!strcmp("--name", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszMachineName);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--dnssuffix", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszDnsSuffix);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--ou", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszOu);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--osname", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszOsName);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--osversion", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszOsVersion);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--osservicepack", option))
        {
            dwError = GetOptionValue(programName, ShowUsageError, &cursor, option,
                                     &pArgs->pszOsServicePack);
            GOTO_CLEANUP_ON_WINERROR(dwError);
        }
        else if (!strcmp("--notimesync", option))
        {
            SetFlag(pArgs->JoinFlags, LSA_NET_JOIN_DOMAIN_NOTIMESYNC);
        }
        else if (!strcmp("--multiple", option))
        {
            SetFlag(pArgs->JoinFlags, LSA_NET_JOIN_DOMAIN_NOTIMESYNC);
            SetFlag(pArgs->JoinFlags, LSA_NET_JOIN_DOMAIN_MULTIPLE);
        }
        else
        {
            fprintf(stderr, "Unrecognized option: %s\n", option);
            ShowUsageError(programName);
        }
    }

    // Process arguments:
    dwError = GetArgumentValue(programName, ShowUsageError, &cursor, "DOMAIN",
                               &pArgs->pszDomain);
    GOTO_CLEANUP_ON_WINERROR(dwError);

    LwStrToUpper(pArgs->pszDomain);

    dwError = GetArgumentValue(programName, ShowUsageError, &cursor, "USERNAME",
                               &pArgs->pszUsername);
    GOTO_CLEANUP_ON_WINERROR(dwError);

    // Optional argument
    dwError = GetArgumentValue(programName, ShowUsageError, &cursor, NULL,
                               &pArgs->pszPassword);
    assert(!dwError);

    if (LwArgvCursorRemaining(&cursor))
    {
        fprintf(stderr, "Too many arguments.\n");
        ShowUsageError(programName);
    }

    // Initialize missing options as needed

    if (!pArgs->pszDnsSuffix)
    {
        dwError = LwAllocateString(pArgs->pszDomain, &pArgs->pszDnsSuffix);
        GOTO_CLEANUP_ON_WINERROR(dwError);
    }
    LwStrToLower(pArgs->pszDnsSuffix);

    if (!pArgs->pszMachineName)
    {
        dwError = GetHostname(&pArgs->pszMachineName);
        GOTO_CLEANUP_ON_WINERROR(dwError);
    }

    if (!pArgs->pszOsName ||
        !pArgs->pszOsVersion ||
        !pArgs->pszOsServicePack)
    {
        dwError = GetOsInfo(
                        pArgs->pszOsName ? NULL : &pArgs->pszOsName,
                        pArgs->pszOsVersion ? NULL : &pArgs->pszOsVersion,
                        pArgs->pszOsServicePack ? NULL : &pArgs->pszOsServicePack);
        GOTO_CLEANUP_ON_WINERROR(dwError);
    }

    dwError = CleanupUsername(pArgs->pszDomain, &pArgs->pszUsername);
    GOTO_CLEANUP_ON_WINERROR(dwError);

    if (!pArgs->pszPassword)
    {
        dwError = PromptPassword(pArgs->pszUsername, &pArgs->pszPassword);
        GOTO_CLEANUP_ON_WINERROR(dwError);
    }

cleanup:
    if (dwError)
    {
        FreeJoinArgsContents(pArgs);
    }

    return dwError;
}