def _modify(options, parser):
    # Set parser options 
    parser.add_argument( "group_id"
                       , action = "store"
                       , help   = "Group id (not group name)."
                       )
    parser.add_argument( "-n", "--group-name"
                       , action  = "store"
                       , default = None
                       , help    = "Group name. This is UTF-8 encoded string."
                       )
    parser.add_argument( "-d", "--description"
                       , action  = "store"
                       , default = None
                       , help    = "Specify group description."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( GROUP.updateGroup
                        , namespace.group_id.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.group_id.lower()  # group id
                               , namespace.group_name        # group name
                               , namespace.description       # group description
                        )
def _create(options, parser):
    # Set parser options
    parser.add_argument( "user_name"
                       , action = "store"
                       , help   = "User name."
                       )
    parser.add_argument( "nickname"
                       , action = "store"
                       , help   = "Nickname."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( NICKNAME.createNickname
                        , namespace.nickname.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_name.lower()    # user
                               , namespace.nickname.lower()     # nickname
                        )
def _demoteowner(options, parser):
    # Set parser options 
    parser.add_argument( "member_name"
                       , action = "store"
                       , help   = "Member name."
                       )
    parser.add_argument( "group_id"
                       , action = "store"
                       , help   = "Group id (not group name)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( GROUP_O.deleteOwnerFromGroup
                        , namespace.group_id.lower()
                        , "{} \"{}\"".format( parser.prog
                                            , namespace.member_name.lower()
                                            )
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.member_name.lower()  # member name
                               , namespace.group_id.lower()     # group id
                        )
Example #4
0
def _delete(options, parser):
    # Set parser options 
    parser.add_argument( "ou_path"
                       , action = "store"
                       , help   = "Organizational unit full path (e.g. /development/sales)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Check ou has full path
    if namespace.ou_path[0] != "/":
        sys.stderr.write(_messages.OU_HAS_NOT_FULL_PATH)
        return False

    # Operation
    return _func.operate( OU.deleteOu
                        , namespace.ou_path
                        , parser.prog
                        , namespace.result_file
                               , auth_token
                               , customer_id
                               , namespace.ou_path            # ou path
                        )
def _create(options, parser):
    # Set parser options
    parser.add_argument( "user_name"
                       , action = "store"
                       , help   = "User name."
                       )
    parser.add_argument( "sn"
                       , action = "store"
                       , help   = "Family name."
                       )
    parser.add_argument( "given_name"
                       , action = "store"
                       , help   = "Given name."
                       )
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )
    parser.add_argument( "-L", "--lock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Lock a user's account."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check hash function name
    if namespace.md5 == True:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"

    # Check lock/unlock
    if namespace.lock == True:
        suspended = "true"
    else:
        suspended = "false"

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get user's password
    hash_password = _func.getHashedPassword_interactive(hash_function_name)

    # Operation
    return _func.operate( USER.createUser
                        , namespace.user_name.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_name.lower()    # user
                               , hash_password                  # password
                               , namespace.sn                   # sn
                               , namespace.given_name           # given name
                               , hash_function_name             # function name
                               , suspended                      # suspended
                        )
Example #6
0
def _modify_f(options, parser):
    import csv

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["ou_path", "description", "block_inheritance"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["ou_path"]
            if not _func.checkRecordHasValue(record, *must_values):
                continue

            # Check ou has full path
            if record["ou_path"][0] != "/":
                sys.stderr.write(_messages.OU_HAS_NOT_FULL_PATH)
                continue

            # Check block/unblock inheritance
            block_inheritance = record["block_inheritance"].lower()
            if block_inheritance == "true":
                block_inheritance = "true"
            elif block_inheritance == "false":
                block_inheritance = "false"
            else:
                block_inheritance = None

            # Operation
            _func.operate( OU.updateOu
                         , record["ou_path"]
                         , parser.prog
                         , namespace.result_file
                             , auth_token
                             , customer_id
                             , record["ou_path"]               # ou path
                             , _func.replaceSpace2None(
                                        record["description"]) # ou description
                             , block_inheritance               # block inheritance
                         )
        return True
def _list(options, parser):
    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    USER2.outputAllUsers(namespace.domain, auth_token)

    return True
Example #8
0
def _moveuser_f(options, parser):
    import csv

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["user_name", "ou_path"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["user_name", "ou_path"]
            if not _func.checkRecordHasValue(record, *must_values):
                continue

            # Check ou has full path
            if record["ou_path"][0] != "/":
                sys.stderr.write(_messages.OU_HAS_NOT_FULL_PATH)
                continue

            _func.operate( OU_U.moveUserToOu
                         , record["ou_path"]
                         , "{} \"{}\"".format( parser.prog
                                             , record["user_name"].lower()
                                             )
                         , namespace.result_file
                              , auth_token
                              , customer_id
                              , "{}@{}".format( record["user_name"]
                                              , namespace.domain
                                              )          # user name
                              , record["ou_path"]        # ou path
                         )
        return True
Example #9
0
def _create(options, parser):
    # Set parser options 
    parser.add_argument( "ou_path"
                       , action = "store"
                       , help   = "Organizational unit full path (e.g. /development/sales)."
                       )
    parser.add_argument( "-d", "--description"
                       , action  = "store"
                       , default = ""
                       , help    = "Specify organizational unit description."
                       )
    parser.add_argument( "-b", "--block-inheritance"
                       , action  = "store_true"
                       , default = False
                       , help    = "Block inheritance (default = False)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Check ou has full path
    if namespace.ou_path[0] != "/":
        sys.stderr.write(_messages.OU_HAS_NOT_FULL_PATH)
        return False

    # Check block/unblock inheritance
    if namespace.block_inheritance == True:
        block_inheritance = "true"
    else:
        block_inheritance = "false"

    # Operation
    return _func.operate( OU.createOu
                        , namespace.ou_path
                        , parser.prog
                        , namespace.result_file
                               , auth_token
                               , customer_id
                               , namespace.ou_path            # ou path
                               , namespace.description        # ou description
                               , block_inheritance            # block inheritance
                        )
def _assignowner(options, parser):
    # Set parser options 
    parser.add_argument( "member_name"
                       , action = "store"
                       , help   = "Member name."
                       )
    parser.add_argument( "group_id"
                       , action = "store"
                       , help   = "Group id (not group name)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    group_members_info = GROUP_M.getAllMembersOfGroup(
                                        namespace.domain
                                      , auth_token
                                      , namespace.group_id.lower()
                                      )

    if not group_members_info.has_key(namespace.member_name.lower()):
        add_result = _func.operate( GROUP_M.addMemberToGroup
                          , namespace.group_id.lower()
                          , "{} \"{}\"".format( "addmember"
                                              , namespace.member_name.lower()
                                              )
                          , namespace.result_file
                                 , namespace.domain
                                 , auth_token
                                 , namespace.member_name.lower()  # member name
                                 , namespace.group_id.lower()     # group id
                          )
        if not add_result:
            sys.stderr.write(_messages.GROUP_ASSIGNED_OWNER)
            return False

    return _func.operate( GROUP_O.assignOwnerToGroup
                        , namespace.group_id.lower()
                        , "{} \"{}\"".format( parser.prog
                                            , namespace.member_name.lower()
                                            )
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.member_name.lower()  # member name
                               , namespace.group_id.lower()     # group id
                        )
def _listnicknamesof(options, parser):
    # Set parser options
    parser.add_argument( "user_name"
                       , action = "store"
                       , help   = "User name."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    NICKNAME.outputAllNicknamesOfUser(namespace.domain, auth_token, namespace.user_name.lower())

    return True
def _listownersof(options, parser):
    # Set parser options 
    parser.add_argument( "group_id"
                       , action = "store"
                       , help   = "Group name."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    GROUP_O.outputAllOwnersOfGroup(namespace.domain, auth_token, namespace.group_id.lower())

    return True
def _listgroupsof(options, parser):
    # Set parser options 
    parser.add_argument( "member_name"
                       , action = "store"
                       , help   = "Member name."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    GROUP.outputAllGroupsOfMember(namespace.domain, auth_token, namespace.member_name.lower())

    return True
Example #14
0
def _listuserswithou(options, parser):
    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Operation
    OU_U.outputAllUsersWithOu(auth_token, customer_id)

    return True
Example #15
0
def _moveuser(options, parser):
    # Set parser options 
    parser.add_argument( "user_name"
                       , action  = "store"
                       , help    = "User name."
                       )
    parser.add_argument( "new_ou_path"
                       , action = "store"
                       , help   = "Organizational unit full path (e.g. /development/sales)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get Customer ID
    try:
        customer_id = __getCustomerId(auth_token)
    except:
        return False

    # Check ou has full path
    if namespace.new_ou_path[0] != "/":
        sys.stderr.write(_messages.OU_HAS_NOT_FULL_PATH)
        return False

    # Operation
    return _func.operate( OU_U.moveUserToOu
                        , namespace.new_ou_path
                        , "{} \"{}\"".format( parser.prog
                                            , namespace.user_name.lower()
                                            )
                        , namespace.result_file
                          , auth_token
                          , customer_id
                          , "{}@{}".format( namespace.user_name.lower()
                                          , namespace.domain
                                          )              # user name
                          , namespace.new_ou_path        # ou path
                        )
def _delete(options, parser):
    # Set parser options 
    parser.add_argument( "nickname_email"
                       , action = "store"
                       , help   = "Nickname."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( NICKNAME2.deleteAlias
                        , namespace.nickname_email.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.nickname_email.lower()    # nickname_email
                        )
def _deletemember_f(options, parser):
    import csv

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["member_name", "group_id"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["member_name", "group_id"]
            if not _func.checkRecordHasValue(record, *must_values):
                continue

            # Operation
            _func.operate( GROUP_M.deleteMemberFromGroup
                        , record["group_id"].lower()
                        , "{} \"{}\"".format( parser.prog
                                            , record["member_name"].lower()
                                            )
                        , namespace.result_file
                        , namespace.domain
                        , auth_token
                        , record["member_name"].lower()        # member name
                        , record["group_id"].lower()           # group id
                    )
        return True
def _delete(options, parser):
    # Set parser options 
    parser.add_argument( "group_id"
                       , action = "store"
                       , help   = "Group id (not group name)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( GROUP.deleteGroup
                        , namespace.group_id.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.group_id.lower()  # group id
                        )
def _delete(options, parser):
    # Set parser options 
    parser.add_argument( "user_email"
                       , action = "store"
                       , help   = "User's mail address."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( USER2.deleteUser
                        , namespace.user_email.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_email.lower()    # user
                        )
def _enable_f(options, parser):
    import csv

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["user_email"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["user_email"]
            if not _func.checkRecordHasValue(*must_values):
                continue

            # Operation
            _func.operate( USER2.updateUser
                         , record["user_email"].lower()
                         , parser.prog
                         , namespace.result_file
                                , namespace.domain
                                , auth_token
                                , record["user_email"].lower()  # user
                                , is_suspended="false"            # suspended
                         )

        return True
def _modify_f(options, parser):
    import csv

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["group_id", "group_name", "description"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["group_id"]
            if not _func.checkRecordHasValue(record, *must_values):
                continue

            # Operation
            _func.operate( GROUP.updateGroup
                , record["group_id"].lower()
                , parser.prog
                , namespace.result_file
                    , namespace.domain
                    , auth_token
                    , record["group_id"].lower()                     # group id
                    , _func.replaceSpace2None(record["group_name"])  # group name
                    , _func.replaceSpace2None(record["description"]) # description
                )
        return True
def _passwd(options, parser):
    # Set parser options 
    parser.add_argument( "user_email"
                       , action = "store"
                       , help   = "User's mail address."
                       )
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check option
    if namespace.md5 == True:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get user's password
    hash_password = _func.getHashedPassword_interactive(hash_function_name)

    # Operation
    return _func.operate( USER2.updateUser
                        , namespace.user_email.lower()
                        , parser.prog
                        , namespace.result_file
                             , namespace.domain
                             , auth_token
                             , namespace.user_email.lower()            # user
                             , password = hash_password                # password
                             , hash_function_name = hash_function_name # function
                        )
Example #23
0
def _enable(options, parser):
    # Set parser options 
    parser.add_argument( "user_name"
                       , action = "store"
                       , help   = "User name."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( USER.updateUser
                        , namespace.user_name.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_name.lower()    # user
                               , suspended="false"              # suspended
                        )
def _create(options, parser):
    # Set parser options
    parser.add_argument( "user_email"
                       , action = "store"
                       , help   = "User's mail address."
                       )
    parser.add_argument( "sn"
                       , action = "store"
                       , help   = "Family name."
                       )
    parser.add_argument( "given_name"
                       , action = "store"
                       , help   = "Given name."
                       )
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )
    parser.add_argument( "-L", "--lock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Lock a user's account."
                       )
    parser.add_argument(       "--assign-administrator"
                       , action  = "store_const"
                       , const   = "true"
                       , default = "false"
                       , help    = "Assign administrator to user (default = not assign)."
                       )
    parser.add_argument(       "--no-change-password-at-next-login"
                       , action  = "store_const"
                       , const   = "false"
                       , default = "true"
                       , help    = ( "If this flag specified, "
                                     "user do not have to change password "
                                     "at next login (default = True)."
                                   )
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check hash function name
    if namespace.md5 == True:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"

    # Check lock/unlock
    if namespace.lock == True:
        suspended = "true"
    else:
        suspended = "false"

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get user's password
    hash_password = _func.getHashedPassword_interactive(hash_function_name)

    # Operation
    return _func.operate( USER2.createUser
                        , namespace.user_email.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_email.lower()   # user
                               , hash_password                  # password
                               , namespace.sn                   # sn
                               , namespace.given_name           # given name
                               , hash_function_name             # function name
                               , suspended                      # suspended
                               , namespace.assign_administrator # assign admin?
                               , namespace.no_change_password_at_next_login # no change?
                        )
def _modify_f(options, parser):
    import csv

    # Set parser options 
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check hash function name
    if namespace.md5 == True:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Get records from csv file
    with open(namespace.csv_file) as f:
        reader = csv.DictReader(f)

        # Check header
        header = f.next().replace("\n", "").split(",")
        must_keys = ["user_email", "password", "sn", "given_name", "must_change_pw_next", "lock"]
        if not _func.checkValidHeader(header, *must_keys):
            return False
        f.seek(0, 0)

        # Read csv
        for record in reader:
            must_values = ["user_email"]
            if not _func.checkRecordHasValue(*must_values):
                continue

            # Get hashed password
            hash_password = _func.getHashedPassword( record["password"]
                                                   , hash_function_name
                                                   )

            # Check suspended
            suspended = record["lock"].lower()
            if suspended == "true":
                suspended = "true"
            elif suspended == "false":
                suspended = "false"
            else:
                suspended = None

            # Check must change password at next login
            is_change_password = record["must_change_pw_next"].lower()
            if is_change_password == "false":
                is_change_password = "******"
            elif is_change_password == "true":
                is_change_password = "******"
            else:
                is_change_password = None

            # Operation
            _func.operate( USER2.updateUser
                         , record["user_email"].lower()
                         , parser.prog
                         , namespace.result_file
                             , namespace.domain
                             , auth_token
                             , record["user_email"].lower()                  # user
                             , hash_password                                 # password
                             , _func.replaceSpace2None(record["sn"])         # sn
                             , _func.replaceSpace2None(record["given_name"]) # given name
                             , hash_function_name                            # function name
                             , suspended                                     # suspended
                             , is_change_password=is_change_password         # is change
                         )

        return True
def _modify(options, parser):
    # Set parser options 
    parser.add_argument( "user_email"
                       , action = "store"
                       , help   = "User's mail address."
                       )
    parser.add_argument( "-p", "--password"
                       , action = "store"
                       , help   = "Specify password."
                       )
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )
    parser.add_argument( "-L", "--lock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Lock a user's account."
                       )
    parser.add_argument( "-U", "--unlock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Unock a user's account."
                       )
    parser.add_argument( "-s", "--sn"
                       , action = "store"
                       , help   = "Specify sn."
                       )
    parser.add_argument( "-g", "--given-name"
                       , action = "store"
                       , help   = "Specify given_name."
                       )
    parser.add_argument(       "--assign-administrator"
                       , action  = "store_true"
                       , default = False
                       , help    = "Assign administrator to user."
                       )
    parser.add_argument(       "--demote-administrator"
                       , action  = "store_true"
                       , default = False
                       , help    = "Demote user from administrator to general user."
                       )
    parser.add_argument(       "--change-password-at-next-login"
                       , action  = "store_true"
                       , default = False
                       , help    = "User must change password at next login."
                       )
    parser.add_argument(       "--no-change-password-at-next-login"
                       , action  = "store_true"
                       , default = False
                       , help    = "User do not have to change password at next login."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check hash function name
    if namespace.md5:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"
    hash_password = _func.getHashedPassword(namespace.password, hash_function_name)

    # Check lock/unlock
    suspended = _func.getTrueOrFalse(namespace.lock, namespace.unlock)
    if suspended == False:
        return False

    # Check assign admin/non-admin
    is_admin = _func.getTrueOrFalse( namespace.assign_administrator
                                   , namespace.demote_administrator
                                   )
    if is_admin == False:
        return False

    # Check must change password or not
    is_change_password = _func.getTrueOrFalse( namespace.change_password_at_next_login
                                             , namespace.no_change_password_at_next_login
                                             )
    if is_change_password == False:
        return False

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( USER2.updateUser
                        , namespace.user_email.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_email.lower()   # user
                               , hash_password                  # password
                               , namespace.sn                   # sn
                               , namespace.given_name           # given name
                               , hash_function_name             # function name
                               , suspended                      # suspended
                               , is_admin                       # assign admin?
                               , is_change_password             # no change?
                        )
Example #27
0
def _modify(options, parser):
    # Set parser options 
    parser.add_argument( "user_name"
                       , action = "store"
                       , help   = "User name."
                       )
    parser.add_argument( "-p", "--password"
                       , action = "store"
                       , help   = "Specify password."
                       )
    parser.add_argument( "-m", "--md5"
                       , action  = "store_true"
                       , default = False
                       , help    = "Use MD5 hash function (default = SHA-1)."
                       )
    parser.add_argument( "-L", "--lock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Lock a user's account."
                       )
    parser.add_argument( "-U", "--unlock"
                       , action  = "store_true"
                       , default = False
                       , help    = "Unock a user's account."
                       )
    parser.add_argument( "-s", "--sn"
                       , action = "store"
                       , help   = "Specify sn."
                       )
    parser.add_argument( "-g", "--given-name"
                       , action = "store"
                       , help   = "Specify given_name."
                       )

    # Get options
    namespace = parser.parse_args(options)

    # Check hash function name
    if namespace.md5:
        hash_function_name = "MD5"
    else:
        hash_function_name = "SHA-1"
    hash_password = _func.getHashedPassword(namespace.password, hash_function_name)

    # Check lock/unlock
    suspended = _func.getTrueOrFalse(namespace.lock, namespace.unlock)
    if suspended == False:
        return False

    # Get auth token
    auth_token = _func.getAuthTokenByLogin(namespace.admin_name, namespace.domain)

    # Operation
    return _func.operate( USER.updateUser
                        , namespace.user_name.lower()
                        , parser.prog
                        , namespace.result_file
                               , namespace.domain
                               , auth_token
                               , namespace.user_name.lower()    # user
                               , hash_password                  # password
                               , namespace.sn                   # sn
                               , namespace.given_name           # given name
                               , hash_function_name             # function name
                               , suspended                      # suspended
                        )