0基本上手python、PHP编程,域自助服务台,自助改密解锁等功能
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3c6c8bba849b4266a9d7e33d16991226~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=ZxUFcKInq59i%2BR8%2FD%2Fjc7KKrjo4%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">王工自研域自助服务台架构图,具备<span style="color: black;">长时间</span>未改密企业<span style="color: black;">微X</span>提醒、自助改密解锁等功能</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">全面对标宁盾微软AD自助修改<span style="color: black;">秘码</span><span style="color: black;">处理</span><span style="color: black;">方法</span></p><span style="color: black;">https://www.nington.com/solution-adpassword/</span>每年可为<span style="color: black;">机构</span>节省5W-10W元
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">说明</span></strong><span style="color: black;">王工域控为windows2022,Self Service Password搭建在OracleLinux8上,python版本为python3最新版本,PHP为OracleLinux8默认源中的PHP7</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">预览</span></strong><span style="color: black;"><span style="color: black;">通告</span>改密</span></p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d7bfe9aadb8c4fa798d226dc47414842~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=gGoj0u%2B7Jv0yXaQ%2Fg92izMPD1WM%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">自助改密</span></p>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/f7efe0ae15ff44c59a7c17a5ebed503b~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=45sjHPj2R4fAMdqpMBM%2BqWPX8KA%3D" style="width: 50%; margin-bottom: 20px;"></div>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/b7689e35693e4a409124d0b88a6b8542~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=jYAOf1BCAPXbjUff9k%2BjGSEJ3oA%3D" style="width: 50%; margin-bottom: 20px;"></div>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/396e9ddd76474cc4a25f3104d4d7a594~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=ealjP8OITh7YlYKlmY36rIVM0Fk%3D" style="width: 50%; margin-bottom: 20px;"></div>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/eb2e51948b77409da893f63daf5f4df8~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=E4K0Y7398%2BwKi%2F3rWgoWCX6JCV4%3D" style="width: 50%; margin-bottom: 20px;"></div>
<div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/aeeacbad9e53449abba96d3327ef9848~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728207527&x-signature=%2FHfVWNlXO0W3nVv7Z6RxRrmDHHU%3D" style="width: 50%; margin-bottom: 20px;"></div>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">架构解析:</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1、域控上域账户<span style="color: black;">守护</span>pager属性(寻呼机),修改为企业<span style="color: black;">微X</span>ID</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2、域控运行扫描脚本,<span style="color: black;">经过</span>计算上次修改<span style="color: black;">秘码</span>时间,超过指定日期,进行企业<span style="color: black;">微X</span>提醒;<span style="color: black;">倘若</span>未<span style="color: black;">守护</span>pager属性,写入日志</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3、Self Service Password域控自助服务台二次<span style="color: black;">研发</span>,改为企业<span style="color: black;">微X</span>接收验证码改密</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">4、进行企业<span style="color: black;">微X</span>提醒时,先<span style="color: black;">查找</span>redis缓存,<span style="color: black;">倘若</span>access_token不存在,则获取一次,<span style="color: black;">倘若</span>存在,直接<span style="color: black;">运用</span>,缓存5400秒自动过期。</p>5、<span style="color: black;">创立</span>企业<span style="color: black;">微X</span>应用,可参考我的zabbix<span style="color: black;">文案</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">搭建前提</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">1、已<span style="color: black;">守护</span>域控pager属性为企业<span style="color: black;">微X</span>userid,此信息需要企业<span style="color: black;">微X</span>管理员后台<span style="color: black;">查找</span>。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">2、已正确<span style="color: black;">安排</span>Self Service Password,<span style="color: black;">能够</span>看我之前的<span style="color: black;">文案</span>。</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">3、已<span style="color: black;">安排</span>redis,<span style="color: black;">意见</span><span style="color: black;">运用</span>docker<span style="color: black;">安排</span>,<span style="color: black;">必定</span>要设置redis<span style="color: black;">秘码</span></p>4、已为php<span style="color: black;">增多</span>php-redis扩展
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">docker一键<span style="color: black;">安排</span>redis</span></strong><span style="color: black;">红帽系系统默认为podman替代docker</span></p><span style="color: black;">podman</span> <span style="color: black;">pull redis</span>
<span style="color: black;">podman</span> <span style="color: black;">run --restart=always -p 6379:6379 --name myredis -d redis --requirepass passwd@123</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">扫描脚本:</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">扫描脚本<span style="color: black;">一样</span>有两部分<span style="color: black;">构成</span>,<span style="color: black;">第1</span>部分是powershell脚本,用于获取域用户信息</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">可指定OU、可自定义要获取的用户属性,生成的文件放在C盘根目录下1.txt,与python脚本对应</p>
<span style="color: black;"><span style="color: black;">adgetuser.ps1</span></span>Get-ADUser -Filter <span style="color: black;">Name -like "*"</span> -SearchBase <span style="color: black;">"OU=测试组,OU=用户OU,DC=90apt,DC=com"</span> -Properties * | Select-<span style="color: black;">Object</span> name,passwordlastset,pager > c:<span style="color: black;">/1.txt</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">运行结果</span></p>
<span style="color: black;">name</span> <span style="color: black;">passwordlastset</span> <span style="color: black;">pager</span>
<span style="color: black;">----</span> <span style="color: black;">---------------</span> <span style="color: black;">-----</span>王忘杰<span style="color: black;">1</span> <span style="color: black;">2023</span>/<span style="color: black;">5</span>/<span style="color: black;">18</span> <span style="color: black;">16</span><span style="color: black;">:39</span><span style="color: black;">:05</span> <span style="color: black;">WangWangJie1</span>
王忘杰<span style="color: black;">2</span> <span style="color: black;">2022</span>/<span style="color: black;">9</span>/<span style="color: black;">26</span> <span style="color: black;">16</span><span style="color: black;">:50</span><span style="color: black;">:41</span> <span style="color: black;">WangWangJie2</span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">第二部分是扫描<span style="color: black;">通告</span>脚本,由主python文件和配置文件ad.config<span style="color: black;">构成</span>,运行后生成errlog.txt日志文件</p>
<span style="color: black;"><span style="color: black;">ad.config</span></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">属性说明</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">corpid:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">appsecret:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">agentid:</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content:内容1</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content1:内容2</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">content2:内容3</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">admin:闲置属性</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">ip:redis<span style="color: black;">位置</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">port:redis端口</p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;">passwd:redis<span style="color: black;">秘码</span></p>passwddate:<span style="color: black;">秘码</span>多少天未修改进行提醒
{
<span style="color: black;">"corpid"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"appsecret"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"agentid"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"content"</span> : <span style="color: black;">"亲爱的 "</span>,
<span style="color: black;">"content1"</span> : <span style="color: black;">" 域用户 :\n您的计算机域账户<span style="color: black;">已然</span>超过 "</span>,
<span style="color: black;">"content2"</span> : <span style="color: black;">" 天<span style="color: black;">无</span>修改<span style="color: black;">秘码</span>了(电脑登录<span style="color: black;">秘码</span>),请您立即更改。\n重置<span style="color: black;">秘码</span>过程请遵循以下原则:\n○<span style="color: black;">秘码</span>长度最少 8 位;\n○<span style="color: black;">秘码</span>中不可<span style="color: black;">显现</span><span style="color: black;">机构</span>和<span style="color: black;">自己</span>中英文拼写\n○<span style="color: black;">秘码</span>符合<span style="color: black;">繁杂</span>性<span style="color: black;">需要</span>(大写字母、小写字母、数字和符号四种中必须有三种)\n操作方式:\n您<span style="color: black;">能够</span><span style="color: black;">经过</span> 自助<span style="color: black;">秘码</span>服务台http://xx/修改<span style="color: black;">秘码</span>,在<span style="color: black;">机构</span>内网中,手机、笔记本、台式机均可<span style="color: black;">拜访</span>"</span>,
<span style="color: black;">"admin"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"ip"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"port"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"passwd"</span> : <span style="color: black;">"xxxx"</span>,
<span style="color: black;">"passwddate"</span> : xx
}<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;">主python文件</span></p>import requests,json,redis,<span style="color: black;">time</span>,logging
from datetime import datetime, timedelta
def get_weixintoken():
#获取<span style="color: black;">微X</span>token
token_url =<span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=</span> + <span style="color: black;">config</span>[<span style="color: black;">0</span>] + <span style="color: black;">&corpsecret=</span> + <span style="color: black;">config</span>[<span style="color: black;">1</span>]
req = requests.get(token_url)
accesstoken = req.json()[<span style="color: black;">access_token</span>]
<span style="color: black;">return</span>accesstoken
def get_redistoken():
readredis = redis.Redis(connection_pool=redis.ConnectionPool(host=<span style="color: black;">config</span>[<span style="color: black;">7</span>],port=<span style="color: black;">config</span>[<span style="color: black;">8</span>],password=<span style="color: black;">config</span>[<span style="color: black;">9</span>],decode_responses=True))
<span style="color: black;">if</span> readredis.get(<span style="color: black;">key</span>) == None:
readredis.set(<span style="color: black;">key</span>, get_weixintoken(),ex=<span style="color: black;">5400</span>)
<span style="color: black;">return</span> (readredis.get(<span style="color: black;">key</span>))
<span style="color: black;">else</span>:
<span style="color: black;">return</span> readredis.get(<span style="color: black;">key</span>)
def post_weixin(userweixin,content):
body = {
<span style="color: black;">"touser"</span>: userweixin,
<span style="color: black;">"msgtype"</span>: <span style="color: black;">"text"</span>,
<span style="color: black;">"agentid"</span>: <span style="color: black;">config</span>[<span style="color: black;">2</span>],
<span style="color: black;">"text"</span>: {
<span style="color: black;">"content"</span>: content
}
}
postweixin = requests.post(
<span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=</span>+get_redistoken(),data=json.dumps(body))
<span style="color: black;">return</span>(postweixin.text)
def get_config():
<span style="color: black;">config</span> = json.loads(<span style="color: black;">open</span>(<span style="color: black;">"ad.config"</span>, encoding=<span style="color: black;">utf-8</span>).<span style="color: black;">read</span>())
<span style="color: black;">return</span> [<span style="color: black;">config</span>[<span style="color: black;">corpid</span>],<span style="color: black;">config</span>[<span style="color: black;">appsecret</span>],<span style="color: black;">config</span>[<span style="color: black;">agentid</span>],<span style="color: black;">config</span>[<span style="color: black;">content</span>],<span style="color: black;">config</span>[<span style="color: black;">content1</span>],<span style="color: black;">config</span>[<span style="color: black;">content2</span>],<span style="color: black;">config</span>[<span style="color: black;">admin</span>],<span style="color: black;">config</span>[<span style="color: black;">ip</span>],<span style="color: black;">config</span>[<span style="color: black;">port</span>],<span style="color: black;">config</span>[<span style="color: black;">passwd</span>],<span style="color: black;">config</span>[<span style="color: black;">passwddate</span>]]
def user_check():
f = <span style="color: black;">open</span>(<span style="color: black;">"C:\\1.txt"</span>, <span style="color: black;">"r"</span>, encoding=<span style="color: black;">utf-16</span>)
<span style="color: black;">lines</span> = f.readlines()
f = <span style="color: black;">open</span>(<span style="color: black;">errlog.txt</span>, <span style="color: black;">w</span>)
<span style="color: black;">for</span> line <span style="color: black;">in</span> <span style="color: black;">lines</span>:
try:
x = line.replace(<span style="color: black;">"/"</span>, <span style="color: black;">"-"</span>)
y = x.split()
time_1 = y[<span style="color: black;">1</span>]
time_2 = <span style="color: black;">time</span>.strftime(<span style="color: black;">"%Y-%m-%d"</span>, <span style="color: black;">time</span>.localtime())
time_1_struct = datetime.strptime(time_1,<span style="color: black;">"%Y-%m-%d"</span>)
time_2_struct = datetime.strptime(time_2, <span style="color: black;">"%Y-%m-%d"</span>)
day = (time_2_struct - time_1_struct).days
userweixin = y[<span style="color: black;">3</span>]
username= y[<span style="color: black;">0</span>]
<span style="color: black;">if</span> day > <span style="color: black;">config</span>[<span style="color: black;">10</span>]:
day = str(day)
<span style="color: black;">time</span>.sleep(<span style="color: black;">1</span>)
try:
post = post_weixin(userweixin,<span style="color: black;">config</span>[<span style="color: black;">3</span>]+username+<span style="color: black;">config</span>[<span style="color: black;">4</span>]+day+<span style="color: black;">config</span>[<span style="color: black;">5</span>])
postjson=json.loads(post)
<span style="color: black;">if</span> postjson[<span style="color: black;">errmsg</span>] != <span style="color: black;">"ok"</span>:
f.<span style="color: black;">write</span>(<span style="color: black;">"发送失败,可能<span style="color: black;">微X</span>号错误 "</span> + userweixin+<span style="color: black;">"\n"</span>)
except :
None<span style="color: black;">else</span>:
None
except:
f.<span style="color: black;">write</span>(<span style="color: black;">"<span style="color: black;">无</span><span style="color: black;">微X</span>号 "</span>+ line)
f.<span style="color: black;">close</span>()
<span style="color: black;">config</span> = get_config()
#post_weixin()
user_check()<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">脚本<span style="color: black;">运用</span></span></strong><span style="color: black;">编译为EXE文件,和ad.config,放在域控服务器<span style="color: black;">经过</span><span style="color: black;">按时</span>任务运行<span style="color: black;">就可</span>。</span></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">Self Service Password企业<span style="color: black;">微X</span>脚本</span></strong><span style="color: black;">项目目录</span><span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/</span></span></span>配置文件<span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/conf/config.inc.local.php</span></span></span>配置文件中修改短信<span style="color: black;">通告</span>方式</p><span style="color: black;">## SMS</span>
<span style="color: black;"># Use sms</span>
$use_sms = <span style="color: black;">true</span>;
<span style="color: black;"># SMS method (mail, api)</span>
$sms_method = <span style="color: black;">"api"</span>;
$sms_api_lib = <span style="color: black;">"lib/weixin.inc.php"</span>;
<span style="color: black;"># GSM number attribute</span>$sms_attributes =<span style="color: black;">array</span>( <span style="color: black;">"pager"</span> );<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">编写企业<span style="color: black;">微X</span><span style="color: black;">通告</span>脚本</span></strong><span style="color: black;"><span style="color: black;"><span style="color: black;">/usr/share/self-service-password/lib/weixin.inc.php</span></span></span></p><span style="color: black;"><span style="color: black;"><?php</span>
<span style="color: black;">//连接本地的 Redis 服务</span>
<span style="color: black;"><span style="color: black;">function</span> <span style="color: black;">get_token</span><span style="color: black;">()</span></span>{
$redis = <span style="color: black;">new</span> Redis();
$redis->connect(<span style="color: black;">修改用自己的IP<span style="color: black;">位置</span></span>, 修改用自己的端口);
$redis->auth(<span style="color: black;">修改用自己的redis<span style="color: black;">秘码</span></span>);
$key = $redis->get(<span style="color: black;">"key"</span>);
<span style="color: black;">if</span> ($key)
{
<span style="color: black;">return</span> $key;
}
<span style="color: black;">else</span>
{
$url=<span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=修改用自己的&corpsecret=修改用自己的</span>;
$jsondb = file_get_contents($url);
$jsondb = json_decode($jsondb,<span style="color: black;">true</span>);
$key = $jsondb[<span style="color: black;">access_token</span>];
$redis->set(<span style="color: black;">"key"</span>, $key);
$redis->expire(<span style="color: black;">"key"</span>, <span style="color: black;">5400</span>);
<span style="color: black;">return</span> $key;
}
}
<span style="color: black;"><span style="color: black;">function</span> <span style="color: black;">send_sms_by_api</span><span style="color: black;">($mobile, $message)</span> </span>{
$postdata = <span style="color: black;">array</span>(
<span style="color: black;">touser</span> => <span style="color: black;">"$mobile"</span>,
<span style="color: black;">msgtype</span> => <span style="color: black;">text</span>,
<span style="color: black;">agentid</span> => <span style="color: black;">修改用自己的</span>,
<span style="color: black;">text</span> => <span style="color: black;">array</span>(
<span style="color: black;">content</span> => <span style="color: black;">"$message"</span>
)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, <span style="color: black;">https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=</span> . get_token());
curl_setopt($ch, CURLOPT_POST, <span style="color: black;">true</span>);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postdata));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,<span style="color: black;">0</span>);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, <span style="color: black;">2</span>);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,<span style="color: black;">true</span>);
$errmsg = json_decode(curl_exec($ch))->errmsg;
<span style="color: black;">if</span> ($errmsg==<span style="color: black;">"ok"</span>)
{
<span style="color: black;">return</span> <span style="color: black;">1</span>;
}
<span style="color: black;">else</span>
{
<span style="color: black;">return</span> <span style="color: black;">0</span>;
}
}<span style="color: black;">?></span></span>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">修改中文<span style="color: black;">表示</span></span></strong><span style="color: black;"><span style="color: black;">例如</span>把短信修改成企业<span style="color: black;">微X</span>,可直接修改语言文件</span></p>/usr/share/<span style="color: black;">self</span>-service-password/lang/zh-CN.inc.php<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">PHP安装redis扩展</span></strong></p>
<p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><strong style="color: blue;"><span style="color: black;">总结</span></strong><span style="color: black;">简单</span></p>
你字句如珍珠,我珍藏这份情。
页:
[1]