MDM Simulator - Configure.py

#!/usr/bin/python

 

#

#

#  This script is used to simulate MDM configurationfor Android device.

#  Currently support:

#      1. Password enforcement

#      2. Camera enable/disable

#      3. Encryption enable/disable

#      4. Time to lock

#

 

import os

import sys

import json

import base64

import ConfigParser

sys.path.append('/opt/emserver/portal/www/cgi-py/')

import hostapi

import esutil

 

ADMIN_DN=""

ADMIN_PASSWD=""

ADMIN_INFO=""

SERVER_IP=""

SERVER_PORT=""

 

passwd_map = {'1' : '32768', '2' : '65536', '3' : '131072','4' : '262144', '5' : '327680', '6' : '393216'}

 

def usage():

    print ("configure.py [account id][username] [policy name] [profile name]")

 

if __name__ == "__main__":

 

    if not 5 == len(sys.argv):

        usage()

        exit(0)

 

    account_id = sys.argv[1]

    username = sys.argv[2]

    policy_name = sys.argv[3]

    profile_name = sys.argv[4]

 

    configfile =open("/etc/sysconfig/mes.json")

    configinfo = configfile.read()

    configfile.close()

    if not configinfo:

        print"configure error, stop now!!!\n"

        exit(-1)

 

    admindata = json.loads(configinfo)

    ADMIN_DN = admindata['user']

    ADMIN_PASSWD = admindata['password']

    ADMIN_INFO = ADMIN_DN + ':' +ADMIN_PASSWD

 

    configfile = ConfigParser.ConfigParser()

   configfile.readfp(open("/opt/emserver/conf/emserver.ini"))

    SERVER_IP =configfile.get("hosted", "ipaddr")

    SERVER_PORT =configfile.get("hosted", "port")

 

    profile_content =hostapi.maintain.hostedaccess.es_get_device_profile_content(username,account_id, policy_name, profile_name)

    profile = json.loads(profile_content,object_hook=esutil.decode_dict)

    if notprofile["profileContent"].has_key("AndroidDeviceProfile"):

       profile["profileContent"]["AndroidDeviceProfile"] ={'ws-type': 'AndroidDeviceProfile', 'DisableCamera':'0', 'EncryptDevice':'0','description': 'The default personal profile', 'profilechecksum':'62718BDD6ECF1A66290BC3723514482B'}

 

    android_settings =profile["profileContent"]["AndroidDeviceProfile"]

    if android_settings.has_key("DisableCamera"):

        status =raw_input("Disable Camera [%s]:" %android_settings["DisableCamera"])

       android_settings["DisableCamera"] = status

    if android_settings.has_key("EncryptDevice"):

        status =raw_input("Encrypt Device [%s]:" % android_settings["EncryptDevice"])

       android_settings["EncryptDevice"] = status

    if android_settings.has_key("TimeToLock"):

        status =raw_input("Time to lock [%s] :" %android_settings["TimeToLock"])

        if status =="":

           android_settings.pop("TimeToLock")

        else:

           android_settings["TimeToLock"] = status

    else:

        status =raw_input("Time to lock :")

        if not status =="":

           android_settings["TimeToLock"] = status

 

    if android_settings.has_key("PasscodeSettings"):

        password =android_settings["PasscodeSettings"]

        status =raw_input("Password quality (1 - Weak 2 - Something 3 - Numeric 4 -Alphabetic 5 - alphanumeric 6 - complex) :")

       password['quality'] = passwd_map[status]

        if password.has_key("max_failures"):

           status = raw_input("Max failures [%s] :" %password["max_failures"])

           if status == "":

               password.pop("max_failures")

           else:

               password["max_failures"] = status

        else:

           status = raw_input("Max failures :")

           if not status == "":

               password["max_failures"] = status

 

        if password.has_key("expiration"):

           status = raw_input("Expiration [%s] :" % password["expiration"])

           if status == "":

               password.pop("expiration")

           else:

               password["expiration"] = status

        else:

           status = raw_input("Expiration :")

           if not status == "":

               password["expiration"] = status

 

        if password.has_key("history"):

           status = raw_input("History [%s] :" % password["history"])

           if status == "":

               password.pop("history")

           else:

               password["history"] = status

        else:

           status = raw_input("History :")

           if not status == "":

               password["history"] = status

 

        if password.has_key("min_length"):

           status = raw_input("Min length [%s] :" %password["min_length"])

           if status == "":

               password.pop("min_length")

           else:

               password["min_length"] = status

        else:

           status = raw_input("Min length :")

           if not status == "":

               password["min_length"] = status

 

        if password.has_key("min_letters"):

           status = raw_input("Min letters [%s] :" %password["min_letters"])

           if status == "":

               password.pop("min_letters")

           else:

               password["min_letters"] = status

        else:

           status = raw_input("Min letters:")

           if not status == "":

               password["min_letters"] = status

 

        if password.has_key("min_lower"):

           status = raw_input("Min lowers [%s] :" %password["min_lower"])

           if status == "":

               password.pop("min_lower")

           else:

               password["min_lower"] = status

        else:

           status = raw_input("Min lowers :")

           if not status == "":

               password["min_lower"] = status

 

        if password.has_key("min_non_letter"):

           status = raw_input("Min non-letters [%s] :" %password["min_non_letter"])

           if status == "":

               password.pop("min_non_letter")

           else:

               password["min_non_letter"] = status

        else:

           status = raw_input("Min non-letters :")

           if not status == "":

               password["min_non_letter"] = status

 

        if password.has_key("min_numeric"):

           status = raw_input("Min numeric digits [%s]:" % password["min_numeric"])

           if status == "":

               password.pop("min_numeric")

           else:

               password["min_numeric"] = status

        else:

           status = raw_input("Min numeric digits :")

           if not status == "":

               password["min_numeric"] = status

 

        if password.has_key("min_symbols"):

           status = raw_input("Min symbols [%s] :" %password["min_symbols"])

           if status == "":

               password.pop("min_symbols")

           else:

              password["min_symbols"] = status

        else:

           status = raw_input("Min symbols :")

           if not status == "":

               password["min_symbols"] = status

 

        if password.has_key("min_upper"):

           status = raw_input("Min uppers [%s] :" %password["min_upper"])

           if status == "":

               password.pop("min_upper")

           else:

               password["min_upper"] = status

        else:

           status = raw_input("Min upper :")

           if not status == "":

               password["min_upper"] = status

 

 

    else:

        status =raw_input("Enable password enforcement (1 - Weak 2 - Something 3 - Numeric4 - Alphabetic 5 - alphanumeric 6 - complex) :")

        if status == '1':

           android_settings["PasscodeSettings"] = {}

           android_settings["PasscodeSettings"]['quality'] = passwd_map["status"]

           status = raw_input("Max failures :")

           if not status == "":

               android_settings["PasscodeSettings"]["max_failures"] =status

           status = raw_input("Expiration :")

           if not status == "":

               android_settings["PasscodeSettings"]["expiration"] = status

           status = raw_input("History :")

           if not status == "":

               android_settings["PasscodeSettings"]["history"] = status

           status = raw_input("Min length :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_length"] = status

           status = raw_input("Min letters :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_letters"] =status

           status = raw_input("Min lowers :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_lower"] = status

           status = raw_input("Min non-letters :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_non_letter"] =status

           status = raw_input("Min numeric digits :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_numeric"] =status

           status = raw_input("Min symbols :")

           if not status == "":

               android_settings["PasscodeSettings"]["min_symbols"] =status

           status = raw_input("Min uppers :")

           ifnot status == "":

               android_settings["PasscodeSettings"]["min_upper"] = status

 

    print android_settings

 

    cmd_get_profile = 'curl -k --user"%s" https://wrest:8085/os/v-1/account-%s/namespace-mobile/object-mobilepolicies/section-%s/section-%s-D header.txt' % (ADMIN_INFO, account_id, policy_name, profile_name)

    print cmd_get_profile

    bashtext =os.popen(cmd_get_profile).readlines()

    result = ''

    for line in bashtext:

        result = result +line

    print result

    profile_content = json.loads(result,object_hook=esutil.decode_dict)

    data =base64.encodestring(json.dumps(profile))

    profile_content['data'] = data

    print profile_content

    timestamp = ""

    fd = open("header.txt")

    headers = fd.readlines()

    for header in headers:

        ifheader.find("Last-Modified:") == 0:

           timestamp = header.strip().split("Last-Modified:")[1]

    print timestamp

 

    profile_str =json.dumps(profile_content)   

    cmd_put_profile = 'curl -k -X PUT--user "%s" -d \'%s\' https://wrest:8085/os/v-1/account-%s/namespace-mobile/object-mobilepolicies/section-%s/section-%s-H "If-Unmodified-Since :%s"' % (ADMIN_INFO, profile_str, account_id,policy_name, profile_name, timestamp)

    print cmd_put_profile

    os.popen(cmd_put_profile)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值