├── media └── Readme.md ├── static ├── css │ ├── ios │ │ ├── Readme.md │ │ ├── swiper.css │ │ └── index.css │ └── pc │ │ ├── login.css │ │ ├── posted.css │ │ ├── sup.css │ │ ├── index.css │ │ ├── modal.css │ │ ├── style.css │ │ └── tube.css ├── images │ ├── ios │ │ ├── 001.png │ │ ├── 002.png │ │ ├── 003.jpg │ │ ├── 004.png │ │ ├── 005.png │ │ └── 006.png │ ├── pc │ │ ├── 001.png │ │ ├── 002.png │ │ ├── 003.png │ │ ├── 004.png │ │ ├── 005.jpg │ │ ├── 006.png │ │ ├── 007.png │ │ └── 008.png │ └── favicon_g.png ├── mobileconfig │ ├── company.mobileprovision │ └── udid.mobileconfig └── js │ └── ios │ ├── download.js │ └── clip.js ├── ios_super_signature ├── __init__.py ├── __pycache__ │ ├── urls.cpython-37.pyc │ ├── wsgi.cpython-37.pyc │ ├── __init__.cpython-37.pyc │ └── settings.cpython-37.pyc ├── urls.py ├── wsgi.py └── settings.py ├── Linux_version ├── migrations │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── 0001_initial.cpython-37.pyc │ └── 0001_initial.py ├── tests.py ├── __init__.py ├── __pycache__ │ ├── admin.cpython-37.pyc │ ├── apps.cpython-37.pyc │ ├── forms.cpython-37.pyc │ ├── urls.cpython-37.pyc │ ├── views.cpython-37.pyc │ ├── models.cpython-37.pyc │ └── __init__.cpython-37.pyc ├── apps.py ├── admin.py ├── forms.py ├── urls.py ├── models.py └── views.py ├── README.md ├── requirements.txt ├── mobileprovision ├── mysign └── updateprofile.rb ├── templates ├── pc │ ├── leftnavtemplate.html │ ├── basetemplate.html │ ├── confirmskip.html │ ├── nologinskip.html │ ├── index.html │ ├── topnavtemplate.html │ ├── login.html │ ├── register.html │ └── distribution.html └── ios │ ├── appinstall.plist │ ├── install_app.html │ └── install_mobileconfig.html └── manage.py /media/Readme.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/css/ios/Readme.md: -------------------------------------------------------------------------------- 1 | a -------------------------------------------------------------------------------- /ios_super_signature/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Linux_version/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IOS超级签名(Linux版本) 2 | 3 | 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | django-simple-captcha==0.5.12 -------------------------------------------------------------------------------- /Linux_version/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | -------------------------------------------------------------------------------- /mobileprovision/mysign: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/mobileprovision/mysign -------------------------------------------------------------------------------- /static/images/ios/001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/001.png -------------------------------------------------------------------------------- /static/images/ios/002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/002.png -------------------------------------------------------------------------------- /static/images/ios/003.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/003.jpg -------------------------------------------------------------------------------- /static/images/ios/004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/004.png -------------------------------------------------------------------------------- /static/images/ios/005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/005.png -------------------------------------------------------------------------------- /static/images/ios/006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/ios/006.png -------------------------------------------------------------------------------- /static/images/pc/001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/001.png -------------------------------------------------------------------------------- /static/images/pc/002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/002.png -------------------------------------------------------------------------------- /static/images/pc/003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/003.png -------------------------------------------------------------------------------- /static/images/pc/004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/004.png -------------------------------------------------------------------------------- /static/images/pc/005.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/005.jpg -------------------------------------------------------------------------------- /static/images/pc/006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/006.png -------------------------------------------------------------------------------- /static/images/pc/007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/007.png -------------------------------------------------------------------------------- /static/images/pc/008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/pc/008.png -------------------------------------------------------------------------------- /static/images/favicon_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/images/favicon_g.png -------------------------------------------------------------------------------- /Linux_version/__init__.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | default_app_config = 'Linux_version.apps.AppConfig' -------------------------------------------------------------------------------- /static/mobileconfig/company.mobileprovision: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/static/mobileconfig/company.mobileprovision -------------------------------------------------------------------------------- /Linux_version/__pycache__/admin.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/admin.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/apps.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/apps.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/forms.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/forms.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/views.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/views.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/models.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/models.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /ios_super_signature/__pycache__/urls.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/ios_super_signature/__pycache__/urls.cpython-37.pyc -------------------------------------------------------------------------------- /ios_super_signature/__pycache__/wsgi.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/ios_super_signature/__pycache__/wsgi.cpython-37.pyc -------------------------------------------------------------------------------- /ios_super_signature/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/ios_super_signature/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /ios_super_signature/__pycache__/settings.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/ios_super_signature/__pycache__/settings.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class LinuxVersionConfig(AppConfig): 5 | name = 'Linux_version' 6 | verbose_name = '分发平台' 7 | -------------------------------------------------------------------------------- /Linux_version/migrations/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/migrations/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /Linux_version/migrations/__pycache__/0001_initial.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yhitee/ios_signature/HEAD/Linux_version/migrations/__pycache__/0001_initial.cpython-37.pyc -------------------------------------------------------------------------------- /ios_super_signature/urls.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from django.urls import path,include 3 | 4 | urlpatterns = [ 5 | path('background_manage/', admin.site.urls), 6 | path('',include('Linux_version.urls')), 7 | ] 8 | -------------------------------------------------------------------------------- /ios_super_signature/wsgi.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | from django.core.wsgi import get_wsgi_application 4 | 5 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ios_super_signature.settings') 6 | 7 | application = get_wsgi_application() 8 | -------------------------------------------------------------------------------- /templates/pc/leftnavtemplate.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 |
超级签名应用不一样的 iOS 签名
不一样的优点
35 | 因机制与企业签名不同,掉签概率远低于企业签名
37 | 即便掉签,也只影响少数用户
38 | 同一台设备下载安装该应用不限制下载次数
39 | 按设备数量收费
47 | 随着苹果审核越来越严格,掉签风险逐日剧增
49 | 每次掉签重新获客,成本极高
50 | 每次下载计算企业签名下载次数
51 | 按下载次数收费
15 |
17 |
15 |
17 |
42 | 3.41万个评分
43 |年龄
47 |无
61 | 62 |版本
128 |需要 iOS 8.0 或更高版本。与 iPhone、iPad 和 iPod touch 兼容。
149 |
175 |
180 |
181 |
191 | APP超级签名
193 |
42 | 3.41万个评分
43 |年龄
47 |无
61 | 62 |满分 5 分
71 |
77 |
78 |
86 |
87 |
95 |
96 |
104 |
105 |
113 |
114 | 3.41万个评分
121 |版本 {{ version }}
128 |需要 iOS 8.0 或更高版本。与 iPhone、iPad 和 iPod touch 兼容。
149 |
175 |
180 |
181 |
191 | APP超级签名
193 |公有池下载数量
25 |{{ User_Used_Devices_Count }}次
28 |共{{ User_Buy_Devices_Count }}次
29 || 应用名称 | 131 |版本 | 132 |捆绑ID | 133 |文件大小 | 134 |下载链接 | 135 |安装量 | 136 |上传时间 | 137 |上架状态 | 138 |操作 | 139 ||
|---|---|---|---|---|---|---|---|---|---|
| {{ Packages.display_name }} | 145 |{{ Packages.version }} | 146 |{{ Packages.bundid_before }} | 147 |{{ Packages.file_size }} M | 148 |{{ Packages.distribution_url }} | 149 |{{ Packages.installed_amount }} | 150 |{{ Packages.upload_datetime }} | 151 | {% if User_Buy_Devices_Count == 0 %} 152 |Off | 153 | {% else %} 154 |On | 155 | {% endif %} 156 |157 | 删除 | 159 |
感谢注册%s
33 |您的用户名:%s , 密码:%s
34 |请点击站点链接完成注册确认!
35 |此链接有效期为%s天!
''' % ( 36 | settings.WEBSITE_DOMAIN, code, settings.WEBSITE_DOMAIN, username, password, settings.CONFIRM_DAYS) 37 | msg = EmailMultiAlternatives(subject, text_content, settings.EMAIL_HOST_USER, [email]) 38 | msg.attach_alternative(html_content, 'text/html') 39 | msg.send() 40 | 41 | 42 | def get_ipapackage_information(path): 43 | information = [] 44 | f = zipfile.ZipFile(path) 45 | file_pattern = re.compile(r'Payload/[^/]*.app/Info.plist') 46 | for paths in f.namelist(): 47 | m = file_pattern.match(paths) 48 | if m is not None: 49 | content = f.read(m.group()) 50 | plist_root = plistlib.loads(content) 51 | information.append(plist_root['CFBundleIdentifier']) # BundleID 52 | information.append(plist_root['CFBundleShortVersionString']) # version 53 | try: 54 | information.append(plist_root['CFBundleDisplayName']) # Displayname 55 | except: 56 | information.append('Not Found App Name') 57 | return information 58 | 59 | 60 | def index(request): 61 | """网站首页""" 62 | return render(request, 'pc/index.html') 63 | 64 | 65 | def laws(request): 66 | """法律法规""" 67 | return render(request, 'pc/lawsregulations.html') 68 | 69 | 70 | def register(request): 71 | """用户注册""" 72 | if request.session.get('is_login', None): 73 | return redirect('index') 74 | if request.method == 'POST': 75 | register_form = forms.RegisterForm(request.POST) 76 | message = '请检查填写的内容' 77 | if register_form.is_valid(): 78 | username = register_form.cleaned_data.get('username') 79 | password1 = register_form.cleaned_data.get('password1') 80 | password2 = register_form.cleaned_data.get('password2') 81 | email = register_form.cleaned_data.get('email') 82 | if password1 != password2: 83 | message = '两次输入的密码不一致' 84 | return render(request, 'pc/register.html', locals()) 85 | else: 86 | same_name_user = models.UserInfo.objects.filter(username=username) 87 | if same_name_user: 88 | message = '用户名已存在' 89 | return render(request, 'pc/register.html', locals()) 90 | 91 | same_email_user = models.UserInfo.objects.filter(email=email) 92 | if same_email_user: 93 | message = '该邮箱已被注册' 94 | return render(request, 'pc/register.html', locals()) 95 | 96 | new_user = models.UserInfo() 97 | new_user.username = username 98 | new_user.password = password1 99 | new_user.email = email 100 | new_user.save() 101 | 102 | code = make_confirm_string(new_user) 103 | try: 104 | send_email(username, password1, email, code) 105 | except: 106 | message = '邮件发送失败' 107 | return render(request, 'pc/confirmskip.html', locals()) 108 | 109 | message = '注册成功!请前往邮箱进行确认,正在跳转至登录...' 110 | return render(request, 'pc/confirmskip.html', locals()) 111 | else: 112 | return render(request, 'pc/register.html', locals()) 113 | register_form = forms.RegisterForm() 114 | return render(request, 'pc/register.html', locals()) 115 | 116 | 117 | def email_confirm(request): 118 | """注册邮件确认""" 119 | code = request.GET.get('code', None) 120 | message = '' 121 | try: 122 | confirm = models.ConfirmString.objects.get(code=code) 123 | except: 124 | message = '无效的确认请求...' 125 | return render(request, 'pc/confirmskip.html', locals()) 126 | c_time = confirm.c_time 127 | now = datetime.datetime.now() 128 | if now > c_time + datetime.timedelta(settings.CONFIRM_DAYS): 129 | confirm.user.delete() 130 | message = '您的邮件已经过期,请重新注册...' 131 | return render(request, 'pc/confirmskip.html', locals()) 132 | else: 133 | confirm.user.has_confirmed = True 134 | confirm.user.save() 135 | confirm.delete() 136 | message = '邮箱确认成功,正在跳转至登录...' 137 | return render(request, 'pc/confirmskip.html', locals()) 138 | 139 | 140 | def login(request): 141 | """用户登录""" 142 | if request.session.get('is_login', None): 143 | return redirect('index') 144 | if request.method == 'POST': 145 | login_form = forms.LoginForm(request.POST) 146 | message = '请检查填写的内容' 147 | if login_form.is_valid(): 148 | username = login_form.cleaned_data.get('username') 149 | password = login_form.cleaned_data.get('password') 150 | try: 151 | user = models.UserInfo.objects.get(username=username) 152 | except: 153 | message = '用户不存在' 154 | return render(request, 'pc/login.html', locals()) 155 | 156 | if not user.has_confirmed: 157 | message = '该用户还未经过邮件确认' 158 | return render(request, 'pc/login.html', locals()) 159 | if user.password == password: 160 | request.session['is_login'] = True 161 | request.session['user_id'] = user.id 162 | request.session['user_name'] = user.username 163 | return redirect('index') 164 | else: 165 | message = '密码错误' 166 | return render(request, 'pc/login.html', locals()) 167 | else: 168 | return render(request, 'pc/login.html', locals()) 169 | else: 170 | login_form = forms.LoginForm() 171 | return render(request, 'pc/login.html', locals()) 172 | 173 | 174 | def logout(request): 175 | """用户注销""" 176 | if not request.session.get('is_login', None): 177 | return redirect('login') 178 | del request.session['is_login'] 179 | del request.session['user_id'] 180 | del request.session['user_name'] 181 | return redirect('index') 182 | 183 | 184 | def nologinskip(request): 185 | """未登录跳转""" 186 | return render(request, 'pc/nologinskip.html') 187 | 188 | 189 | def distribution_management(request): 190 | """超级签名应用""" 191 | if not request.session.get('is_login', None): 192 | return redirect('nologinskip') 193 | user_id = request.session.get('user_id', None) 194 | 195 | if request.GET.get('delete') == 'true': 196 | Query_Information = models.IpaPackage.objects.filter(userinfo_id=user_id, 197 | distribution_url=request.GET.get('distribution_url')) 198 | Query_Information.delete() 199 | return redirect(reverse('distribute_management')) 200 | 201 | try: 202 | user_Package_information = models.IpaPackage.objects.filter(userinfo_id=user_id) 203 | UDID_Information = models.UDID.objects.filter(userinfo_id=user_id) 204 | for Package in user_Package_information: 205 | for udid_info in UDID_Information: 206 | if udid_info.request_distribution_url == Package.distribution_url: 207 | Install_Count = UDID_Information.filter(request_distribution_url=Package.distribution_url).values( 208 | 'udid', 'request_distribution_url').order_by('request_distribution_url').distinct().count() 209 | user_Package_information.filter(distribution_url=udid_info.request_distribution_url).update( 210 | installed_amount=Install_Count) 211 | USER_PACKAGE_INFORMATION = models.IpaPackage.objects.filter(userinfo_id=user_id) 212 | User_Buy_Devices_Count = models.UserInfo.objects.filter(id=user_id)[0].buy_devices_count 213 | User_Used_Devices_Count = models.UDID.objects.filter(userinfo_id=user_id).values('udid').order_by( 214 | 'udid').distinct().count() 215 | if User_Buy_Devices_Count == 0: 216 | Percent = 0 217 | else: 218 | Percent = int(round(User_Used_Devices_Count / User_Buy_Devices_Count, 2) * 100) 219 | except: 220 | message = 'Database query Error, please contact webmaster!' 221 | return render(request, 'pc/distribution.html', locals()) 222 | 223 | return render(request, 'pc/distribution.html', locals()) 224 | 225 | 226 | def ipapackage_upload(request): 227 | """IPA包上传""" 228 | if not request.session.get('is_login', None): 229 | return redirect('nologinskip') 230 | username = request.session.get('user_name', None) 231 | if request.method == 'POST': 232 | upload_form = forms.UploadFileForm(request.POST, request.FILES) 233 | if upload_form.is_valid(): 234 | instance = models.IpaPackage() 235 | instance.ipaupload_path = request.FILES['file'] 236 | user = models.UserInfo.objects.get(username=username) 237 | instance.userinfo = user 238 | instance.save() 239 | try: 240 | file_size = round(instance.ipaupload_path.size / 1024 / 1024, 2) # 文件大小 241 | absolute_path = os.path.join(settings.MEDIA_ROOT, instance.ipaupload_path.name) # IPA文件绝对路径 242 | information = get_ipapackage_information(absolute_path) 243 | bundid_before = information[0] 244 | version = information[1] 245 | display_name = information[2] 246 | bundid_after = bundid_before + settings.DOMAIN_POSTFIX + ''.join( 247 | random.sample(string.ascii_letters + string.digits, 6)) 248 | appidName = bundid_after.replace('.', '') 249 | remove_extend = ''.join(instance.ipaupload_path.name.split('.')[:-1]) 250 | if remove_extend: 251 | distribution_url = 'http://%s/%s' % (settings.WEBSITE_DOMAIN, remove_extend) 252 | else: 253 | distribution_url = 'http://%s/%s' % (settings.WEBSITE_DOMAIN, instance.ipaupload_path.name) 254 | instance.bundid_before = bundid_before 255 | instance.bundid_after = bundid_after 256 | instance.version = version 257 | instance.display_name = display_name 258 | instance.appid_name = appidName 259 | instance.distribution_url = distribution_url 260 | instance.absolute_path = absolute_path 261 | instance.file_size = file_size 262 | instance.save() 263 | except: 264 | instance.delete() 265 | message = {'detail_message': 'Error:IPA包信息提取错误,请检查后重新上传!如有疑问,请联系网站管理员'} 266 | return HttpResponse(json.dumps(message), content_type="application/json") 267 | message = {'detail_message': 'Success:文件上传成功!'} 268 | else: 269 | message = {'detail_message': '不允许上传空文件哟!'} 270 | return HttpResponse(json.dumps(message), content_type="application/json") 271 | if request.method == 'GET': 272 | return render(request, 'pc/distribution.html', locals()) 273 | 274 | 275 | ######################################################## IOS端 ######################################################### 276 | 277 | def ios_request(request, username, ipafilename): 278 | if username == 'udid_submit' and ipafilename == 'udid_submit': 279 | product = request.GET.get('product') 280 | udid = request.GET.get('udid') 281 | if product and udid: 282 | request.session['product'] = product 283 | request.session['udid'] = udid 284 | message_storage = messages.get_messages(request) 285 | for User_IOS_Request in message_storage: 286 | if User_IOS_Request.level == 50: 287 | request.session['request_distribution_url'] = str(User_IOS_Request) 288 | elif User_IOS_Request.level == 51: 289 | request.session['Userinfo_id'] = str(User_IOS_Request) 290 | elif User_IOS_Request.level == 52: 291 | request.session['UserName'] = str(User_IOS_Request) 292 | else: 293 | pass 294 | else: 295 | return HttpResponse('
66 | 评分及评论
67 |满分 5 分
71 |74 |-
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 | -
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | -
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | -
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 | -
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |3.41万个评分
121 |