Initial commit
8
XCode 配置.txt
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
## 安装 CocoaPods
|
||||
https://blog.csdn.net/BlackMonkey_xj/article/details/124466716
|
||||
|
||||
## SDK does not contain 'libarclite' at the path '/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a'; try increasing the minimum deployment target
|
||||
M3芯片上不知道什么原因报错,把旧机器(x86)上的 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/ 目录下的静态库,拷贝过来,可以用。
|
||||
|
||||
|
||||
59
iap.txt
Normal file
@ -0,0 +1,59 @@
|
||||
|
||||
//verify
|
||||
{"transactionId":"2000000636724653","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000065291589","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1719216929000,"originalPurchaseDate":1718783687000,"expiresDate":1719217109000,"quantity":1,"type":"Auto-Renewable Subscription","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1719223181779,"storefront":"USA","storefrontId":"143441","transactionReason":"RENEWAL","environment":"Sandbox","price":4990,"currency":"USD"}
|
||||
|
||||
|
||||
// callback
|
||||
{"Payload":{"notificationType":"SUBSCRIBED","subtype":"RESUBSCRIBE","notificationUUID":"ba289004-33f5-4622-a1ed-ee6699ef8c01","version":"2.0","signedDate":1719053019214,"summary":{"requestIdentifier":"","appAppleId":"","bundleId":"","productId":"","environment":"","storefrontCountryCodes":null,"failedCount":0,"succeededCount":0},"data":{"appAppleId":6504465465,"bundleId":"com.easyprompts.aigrammar","bundleVersion":"1","environment":"Sandbox","signedRenewalInfo":"..","signedTransactionInfo":"..","status":1},"externalPurchaseToken":{"externalPurchaseId":"","tokenCreationDate":0,"appAppleId":"","bundleId":""}},"TransactionInfo":{"appAccountToken":"","bundleId":"com.easyprompts.aigrammar","currency":"USD","environment":"Sandbox","expiresDate":1719053192000,"inAppOwnershipType":"PURCHASED","isUpgraded":false,"offerDiscountType":"","offerIdentifier":"","offerType":0,"originalPurchaseDate":1718783687000,"originalTransactionId":"2000000632564540","price":4990,"productId":"grammar_1_week","purchaseDate":1719053012000,"quantity":1,"revocationDate":0,"revocationReason":0,"signedDate":1719053019185,"storefront":"USA","storefrontId":"143441","subscriptionGroupIdentifier":"21501008","transactionId":"2000000635829288","transactionReason":"PURCHASE","type":"Auto-Renewable Subscription","webOrderLineItemId":"2000000065075723"},"RenewalInfo":{"autoRenewProductId":"grammar_1_week","autoRenewStatus":1,"environment":"Sandbox","expirationIntent":0,"gracePeriodExpiresDate":0,"isInBillingRetryPeriod":false,"offerIdentifier":"","offerType":0,"originalTransactionId":"2000000632564540","priceIncreaseStatus":0,"productId":"grammar_1_week","recentSubscriptionStartDate":1719053012000,"renewalDate":1719053192000,"signedDate":1719053019185},"IsValid":true,"IsTest":false}
|
||||
|
||||
|
||||
16:03:59 🟢 2000000648192679: {"transactionId":"2000000648192679","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066437481","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166630000,"originalPurchaseDate":1718783687000,"expiresDate":1720166810000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"oKZZXZuzZ5QAFwsiNSg56fq292UfDPFkqCpGhsjYh5QAuOMtVy419BiQSuLTq5J4","deviceVerificationNonce":"b8d63d5e-b6e1-4c73-a72c-2ba319582b23","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166638832,"environment":"Sandbox","transactionReason":"PURCHASE","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:04:01 🟢
|
||||
16:04:01 🟢 2000000648192679: {"transactionId":"2000000648192679","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066437481","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166630000,"originalPurchaseDate":1718783687000,"expiresDate":1720166810000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"5Nl99gKQxpFSlYC2twMwPmgP5OC2obpBtOfs6p+bR+fJyQRnoVE4C3ZnWtrmQmo9","deviceVerificationNonce":"e9fe05f7-3305-4f91-bbff-539bbe147624","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166641120,"environment":"Sandbox","transactionReason":"PURCHASE","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:04:02 🟢
|
||||
16:05:51 🟢 2000000648192679: {"transactionId":"2000000648192679","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066437481","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166630000,"originalPurchaseDate":1718783687000,"expiresDate":1720166810000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"9A2Si6WNj3/HHObhoO9kv9Egyd3W4BcG1uDh3fKgN5IvMvIeWzhh7A9drx7ENl1d","deviceVerificationNonce":"b3013f02-27b2-4310-a0bd-6ac6ad57b318","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166630546,"environment":"Sandbox","transactionReason":"PURCHASE","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:05:53 🟢
|
||||
16:06:12 🟢 2000000648196624: {"transactionId":"2000000648196624","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066547746","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166810000,"originalPurchaseDate":1718783687000,"expiresDate":1720166990000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"WHAS3tP9Dc2HBSB5Q0M+RyyYYC+LHjD4/5cSoa2ks3Oz+kGE660dTnp5unBQlye6","deviceVerificationNonce":"9113a837-b4b9-4621-b2ac-fbcc1eb56420","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166772253,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:06:13 🟢
|
||||
16:06:14 🟢 2000000648196624: {"transactionId":"2000000648196624","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066547746","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166810000,"originalPurchaseDate":1718783687000,"expiresDate":1720166990000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"Idgut4CTAptacnz6ZefN2A92ZS09bQa6hY1E31HhcHts8cpQfWiGW39bo0M2UXRc","deviceVerificationNonce":"262bf285-c91d-41b5-af59-3714ce22ff4a","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166774275,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:06:15 🟢
|
||||
16:09:47 🟢 2000000648203889: {"transactionId":"2000000648203889","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548067","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166990000,"originalPurchaseDate":1718783687000,"expiresDate":1720167170000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"a2BNPlCByC4MNv98BEl/kGYjtT58TZys790kJO7o6qdGNjiLEeIfcnC7rLjPa3sc","deviceVerificationNonce":"507204f3-dd3a-4ec0-8157-14f002f019b4","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166987200,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:09:49 🟢 2000000648203889: {"transactionId":"2000000648203889","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548067","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720166990000,"originalPurchaseDate":1718783687000,"expiresDate":1720167170000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"eLDlklVORVW9VaQGxGR4dI2mRDcf2OVmMUA4MWG0mOZaNlADuSS8nGfTEJE0y5/e","deviceVerificationNonce":"3cef9383-7173-48ae-abdd-2c01cc6fab4b","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720166989055,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:09:50 🟢
|
||||
16:09:52 🟢
|
||||
16:12:05 🟢 2000000648206215: {"transactionId":"2000000648206215","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548546","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167170000,"originalPurchaseDate":1718783687000,"expiresDate":1720167350000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"aBbhrdwdMuyenE+u9mqeGuINM8kAA7AlG2fZr2LX6HCoa8YUTRGlFgpvitlieSKJ","deviceVerificationNonce":"38200a1e-df42-4b0d-99f1-5368406ae0be","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167125125,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:12:06 🟢
|
||||
16:12:07 🟢 2000000648206215: {"transactionId":"2000000648206215","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548546","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167170000,"originalPurchaseDate":1718783687000,"expiresDate":1720167350000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"7PMlOFa6beNQ+HDOAQMYAa5kKufJuDk+M9EhRG70daro3vpp5Z/hlp9gxb1Y5i15","deviceVerificationNonce":"51baef36-0b96-457d-a8bf-555cefb08efc","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167127337,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:12:08 🟢
|
||||
16:14:59 🟢 2000000648211980: {"transactionId":"2000000648211980","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548851","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167350000,"originalPurchaseDate":1718783687000,"expiresDate":1720167530000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"CPCpjEekqAkMz59cnTT29YQlE0PWMLqWMje6I3gmlgZgQiP6RLGPf0HZgFD8l3v+","deviceVerificationNonce":"e0e4b830-f3c3-438a-9d5a-fe9d1cef030c","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167299009,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:15:02 🟢 2000000648211980: {"transactionId":"2000000648211980","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066548851","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167350000,"originalPurchaseDate":1718783687000,"expiresDate":1720167530000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"96C3gSNEHxq/u3RsKMY9FuNVD0p585mTOQfG82k+rCPgwaLa0Wl2jTOk8i6XT3+x","deviceVerificationNonce":"1f5a5e0c-24ce-4d32-a43a-a8099e65b449","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167301561,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:15:02 🟢
|
||||
16:15:04 🟢
|
||||
16:18:22 🟢 2000000648216487: {"transactionId":"2000000648216487","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066549319","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167530000,"originalPurchaseDate":1718783687000,"expiresDate":1720167710000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"zoTIunllByJY4uXxF1hPc2v1AWBFVaEpfpPEU+aaGSX/Es/USxbO0tHF2MRFr5is","deviceVerificationNonce":"7214bd17-7de5-447b-9867-c0519d93eabd","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167501980,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:18:24 🟢
|
||||
16:18:24 🟢 2000000648216487: {"transactionId":"2000000648216487","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066549319","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167530000,"originalPurchaseDate":1718783687000,"expiresDate":1720167710000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"GJZyCWVnPfkfL9gXYXLRHwdGOapJEVCpd0npneJur/IZLhzPtJ4YWpxm1ioK3IAT","deviceVerificationNonce":"c536e66b-4f50-4347-9fc7-7c4aad3f6fc4","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167504431,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:18:25 🟢
|
||||
16:21:27 🟢 2000000648221268: {"transactionId":"2000000648221268","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066549756","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167710000,"originalPurchaseDate":1718783687000,"expiresDate":1720167890000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"n43w4+ooPn4hx4IJXdtRoH2MaMA4x99pQSOkMA954KNrZb3jUDMuWyUjbGUdDomw","deviceVerificationNonce":"64e42b80-84d4-47d5-b15d-4b8e16551373","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167687515,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:21:30 🟢 2000000648221268: {"transactionId":"2000000648221268","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066549756","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167710000,"originalPurchaseDate":1718783687000,"expiresDate":1720167890000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"PPLM9lTbspKODw++7uU8917bUMvPNIYsvwEOMEALq1bHhoKbaRsOv+VtGVNslDVS","deviceVerificationNonce":"bf51f0c5-da1e-4171-8655-b2d0e9f4215b","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167689653,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:21:30 🟢
|
||||
16:21:31 🟢
|
||||
16:24:32 🟢 2000000648227718: {"transactionId":"2000000648227718","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550193","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167890000,"originalPurchaseDate":1718783687000,"expiresDate":1720168070000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"hrUNB5gc/93oL6IYILpbveD1zngojP+APyQGKNm6Ke8nzA0ie75GyYm1c0jFWA7L","deviceVerificationNonce":"625bcd1d-29ac-416a-a7a9-916d06051ee0","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167872211,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:24:35 🟢 2000000648227718: {"transactionId":"2000000648227718","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550193","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720167890000,"originalPurchaseDate":1718783687000,"expiresDate":1720168070000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"hhMGShRuGJnUKTdu+KTN1CVxIvOXuLYgVafVl++n2GBogY85aCeMcf56n1KkHe97","deviceVerificationNonce":"23668f3a-9bf6-4077-959e-e0937fdda4fb","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720167874971,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:24:35 🟢
|
||||
16:24:36 🟢
|
||||
16:27:01 🟢 2000000648230389: {"transactionId":"2000000648230389","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550650","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168070000,"originalPurchaseDate":1718783687000,"expiresDate":1720168250000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"MDjK7SJlHF0eBgsx0PRmsvrUHpFXfYsTGu7mtae+vJf9BGyx0nacJLvViEm6nfuf","deviceVerificationNonce":"ec158d27-2478-4fe8-9785-0c682a7dc208","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168021545,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:27:03 🟢
|
||||
16:27:04 🟢 2000000648230389: {"transactionId":"2000000648230389","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550650","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168070000,"originalPurchaseDate":1718783687000,"expiresDate":1720168250000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"qZL5dEo0FYsC1ueiRMXUvP7u70X7vtEG1bNJ4oJmf/qQkvgq4TxNctcBbRz8Hofu","deviceVerificationNonce":"5e0c62dc-5c93-43be-8703-423e80b67123","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168023899,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:27:04 🟢
|
||||
16:30:27 🟢 2000000648234357: {"transactionId":"2000000648234357","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550993","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168250000,"originalPurchaseDate":1718783687000,"expiresDate":1720168430000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"ypumjlD+TNfCkaqnczNKcMFPDWXA//Y+Ce8X+NsmIneKxNkj3SkxrA3NF2lR/oaY","deviceVerificationNonce":"40735101-1a31-4151-b455-6ed545f81cb6","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168227071,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:30:29 🟢 2000000648234357: {"transactionId":"2000000648234357","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066550993","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168250000,"originalPurchaseDate":1718783687000,"expiresDate":1720168430000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"2juKkmbGcifKOsEI/JC49IYIhEcunm8Lx2n+atiheSbCE9qBO65l6ohhE78FcW+X","deviceVerificationNonce":"9e607faa-1c2c-4883-9962-796631f05b0f","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168228994,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:30:29 🟢
|
||||
16:30:30 🟢
|
||||
16:33:23 🟢 2000000648239292: {"transactionId":"2000000648239292","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066551484","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168430000,"originalPurchaseDate":1718783687000,"expiresDate":1720168610000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"FFkQLukIjsTI1uyoZKwC2zplSqvg3JIchJuMqveIV/yi3WP7PHSLvVfAm6IjjABW","deviceVerificationNonce":"43f11dae-3fb7-4029-baa8-fb459dbd5671","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168402693,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:33:25 🟢 2000000648239292: {"transactionId":"2000000648239292","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066551484","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168430000,"originalPurchaseDate":1718783687000,"expiresDate":1720168610000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"NGqD8Fz9iUG2w7NYD3ScgsFSsyihJeiCpJwviF98HxPFe//iYHK05Zheu0jnkr52","deviceVerificationNonce":"fae2aadc-eca1-4f76-bcb5-ffe5a53f7458","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168404782,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:33:25 🟢
|
||||
16:33:26 🟢
|
||||
16:36:24 🟢 2000000648246489: {"transactionId":"2000000648246489","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066551897","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168610000,"originalPurchaseDate":1718783687000,"expiresDate":1720168790000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"cx9Vr0UJDKuGe5cs+l2CI/F3mKwpmzdkbjIklMibx6uB6IxJIb5exywk7beIExpu","deviceVerificationNonce":"ae30fdf6-d17b-4dff-a380-c4fa5be64209","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168584040,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:36:26 🟢
|
||||
16:36:26 🟢 2000000648246489: {"transactionId":"2000000648246489","originalTransactionId":"2000000632564540","webOrderLineItemId":"2000000066551897","bundleId":"com.easyprompts.aigrammar","productId":"grammar_1_week","subscriptionGroupIdentifier":"21501008","purchaseDate":1720168610000,"originalPurchaseDate":1718783687000,"expiresDate":1720168790000,"quantity":1,"type":"Auto-Renewable Subscription","deviceVerification":"PYZx9g8PH1kOz45iTn0oB7QbpJQ5+ICoUQ8wSu05uQAZCb0ZMXIwNCGOrcYVfJMf","deviceVerificationNonce":"1a80065a-1b7b-4d21-ba1a-5c5ccaabccb9","appAccountToken":"e2fde03b-c5ab-46a3-aacc-2d96c6bbeb84","inAppOwnershipType":"PURCHASED","signedDate":1720168586170,"environment":"Sandbox","transactionReason":"RENEWAL","storefront":"USA","storefrontId":"143441","price":4990,"currency":"USD"}
|
||||
16:36:27 🟢
|
||||
73
mysql.txt
Normal file
@ -0,0 +1,73 @@
|
||||
|
||||
CREATE USER 'devops'@'localhost' IDENTIFIED BY 'b5hs945wXjHr';
|
||||
mysql -uroot -pehKK3lDXo5jx
|
||||
|
||||
|
||||
CREATE TABLE aigrammar.`user` (
|
||||
ID INT UNSIGNED DEFAULT 10000 auto_increment NOT NULL,
|
||||
UserID varchar(100) NULL COMMENT 'UserID',
|
||||
UserName varchar(100) NULL COMMENT 'username',
|
||||
DeviceID varchar(256) NULL COMMENT 'DeviceID',
|
||||
RegChannel varchar(100) NULL COMMENT 'Email, Apple, Google',
|
||||
OpenID varchar(100) NULL COMMENT 'ID from other channels',
|
||||
RegTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
|
||||
UpdateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
|
||||
CONSTRAINT user_pk PRIMARY KEY (ID)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
AUTO_INCREMENT 10000
|
||||
COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
|
||||
CREATE TABLE aigrammar.vip (
|
||||
ID INT UNSIGNED NOT NULL,
|
||||
IsVIP INT DEFAULT 0 NULL COMMENT '1-VIP; 0-not vip',
|
||||
AppStore varchar(100) DEFAULT 'apple' NULL COMMENT 'apple;google',
|
||||
ProductID varchar(100) NULL,
|
||||
ProductType varchar(100) NULL COMMENT 'yearly;monthly;weekly;',
|
||||
Environment varchar(100) NULL COMMENT 'prod;sandbox',
|
||||
PurchaseDate TIMESTAMP NULL,
|
||||
Price INT NULL,
|
||||
Currency varchar(100) NULL,
|
||||
Storefront varchar(100) NULL COMMENT 'USA',
|
||||
ExpDate TIMESTAMP NULL,
|
||||
AutoRenew INT NULL COMMENT '1-yes;0-no',
|
||||
OriginalTransactionID varchar(100) NULL COMMENT 'applestore originalTransactionId',
|
||||
CONSTRAINT vip_pk PRIMARY KEY (ID)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
|
||||
CREATE TABLE aigrammar.oder_log (
|
||||
LogID INT UNSIGNED auto_increment NOT NULL,
|
||||
AppStore varchar(100) NULL COMMENT 'apple;google',
|
||||
NotificationType varchar(100) NULL,
|
||||
Subtype varchar(100) NULL,
|
||||
Environment varchar(100) NULL COMMENT 'product;sandbox',
|
||||
AppAccountToken varchar(100) NULL,
|
||||
CreateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
|
||||
TransactionInfo TEXT NULL,
|
||||
RenewalInfo TEXT NULL,
|
||||
Payload TEXT NULL,
|
||||
CONSTRAINT oder_log_pk PRIMARY KEY (LogID)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
|
||||
CREATE TABLE aigrammar.product (
|
||||
ProductID varchar(100) NOT NULL,
|
||||
AppStore varchar(100) DEFAULT 'apple' NOT NULL,
|
||||
Duration INT DEFAULT 0 NULL COMMENT '订阅天数',
|
||||
ProductName varchar(100) NULL COMMENT '自定义商品名称',
|
||||
Price INT NULL COMMENT '定价,分',
|
||||
Currency varchar(100) NULL COMMENT '币种',
|
||||
CONSTRAINT product_pk PRIMARY KEY (ProductID,AppStore)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_0900_ai_ci;
|
||||
BIN
pic/crown.png
Normal file
|
After Width: | Height: | Size: 7.1 KiB |
120
pic/ios-icon/AppIcon.appiconset/Contents.json
Normal file
@ -0,0 +1,120 @@
|
||||
{
|
||||
"images": [
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-20@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "20x20",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-20@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-29@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "29x29",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-29@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "38x38",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-38@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "38x38",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-38@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-40@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "40x40",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-40@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-60@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "60x60",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-60@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "64x64",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-64@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "64x64",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-64@3x.png",
|
||||
"scale": "3x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "68x68",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-68@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "76x76",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-76@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "83.5x83.5",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-83.5@2x.png",
|
||||
"scale": "2x",
|
||||
"platform": "ios"
|
||||
},
|
||||
{
|
||||
"size": "1024x1024",
|
||||
"idiom": "universal",
|
||||
"filename": "icon-1024.png",
|
||||
"scale": "1x",
|
||||
"platform": "ios"
|
||||
}
|
||||
],
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": "icon.wuruihong.com"
|
||||
}
|
||||
}
|
||||
BIN
pic/ios-icon/AppIcon.appiconset/icon-1024.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-20@2x.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-20@3x.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-29@2x.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-29@3x.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-38@2x.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-38@3x.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-40@2x.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-40@3x.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-60@2x.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-60@3x.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-64@2x.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-64@3x.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-68@2x.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-76@2x.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
pic/ios-icon/AppIcon.appiconset/icon-83.5@2x.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
pic/logo-easypropmt.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
pic/logo.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
pic/其他/WechatIMG380.jpg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
pic/其他/camera.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
pic/其他/hand-mirror.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
pic/其他/mirror.jpeg
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
pic/其他/mirror2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
pic/其他/mirror_icon.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
pic/官网/图标.jpeg
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
pic/官网/应用列表.png
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
pic/官网/背景-关于我们.jpeg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
pic/官网/首页轮播1.jpeg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
pic/官网/首页轮播2.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
367
prompts.md
Normal file
@ -0,0 +1,367 @@
|
||||
## 查看正在调试的 iPhone 的日志:
|
||||
cd /Users/oscar/Downloads/brew-4.3.8/bin
|
||||
./ios-deploy --bundle_id com.easyprompts.aigrammar --download=/Library/Caches/swiftybeaver.log --to ~/Downloads/
|
||||
对应目录下的 Library/Caches/swiftybeaver.log 既是
|
||||
|
||||
|
||||
## 需要一个菊花转动,与后台交互
|
||||
我们继续工作。先回忆一下我们之前都做了哪些。我们编写了GrammarCheckView,TranslateView,WordsView和SettingsView。他们分别完成不同的功能。现在,我们需要一个统一的组建,它需要在客户端有点击事件,与服务端交互时弹出,使得整个页面不可点击和操作;等服务端结果出来之后,再刷新页面。这个组建通常是一个转动的齿轮。它需要在我们上面提到的每个View中用到,所以,我们需要一个比较好的封装。请你以 WordsView 页面为例,给出实现的方法。
|
||||
|
||||
|
||||
# 付费页面
|
||||
## quest1
|
||||
我们继续在APP中增加付费功能。在首页,也就是GrammarCheckView中,我们有个"Try for Free" 按钮,我们希望用户点击后,能弹出一个付费界面。这个页面是全屏的,并且会在其他页面上弹出,比如SettingsView。所以,我们希望它能够被多个地方引用。
|
||||
这个页面的布局,最上面,左侧是一个VIP的图片标记,可以用Text来包装,背景是淡黄色,文字是VIP,金黄色。右侧是一个关闭按钮,点击后关闭付费页面。
|
||||
下面是个表格,有四行三列。表头的三行,分别是Features、Free、Premium。下面是一些功能的对比。
|
||||
在下面,是个VIP的商品列表,这里可能有三个或者两个商品,要展示的信息,是商品名称、付费金额,以及单价。它分为两列,左边的主要字体是商品名称,下面一行小字是付费金额;右边的主要字体是单价。
|
||||
|
||||
|
||||
最下面是一个购买的按钮,居中显示,点击后拉起应用商店的支付。
|
||||
按钮下面可以加一行小字,显示“Billed Yearly,Cancel Anytime.” 注意这个字会随着用户选择的商品变化而变化。
|
||||
|
||||
现在,我们可以先生成一下页面看看效果了。
|
||||
|
||||
## quest2
|
||||
|
||||
|
||||
# 单词页面
|
||||
## Q1
|
||||
首先,我们希望把搜索框和右边的Cancel按钮放到一个组件中,让它看起来像个整体。为此,我们在它们的背景上,增加一个矩形框,它与整体的背景颜色相同,但会有比较细的边框,用于和背景区分;然后我们把文本框的底色设置跟背景色接近,Cancel按钮只显示白色文字即可;
|
||||
其次,我们现在用HStack封装了List,List是我们所需要的动态填充的数据。但现在的页面比较难看,我们希望封装List的部分,跟背景色完全重合,这样,从视觉上看,会只有几个List的内容。
|
||||
请你帮忙修改一下代码,然后我们观察一下效果。有问题可以问我。
|
||||
|
||||
|
||||
# SettingsView 页面
|
||||
首先,我们使用了List来展示几个功能,但我不希望有header这一行,我希望能够把Section的内容直接衔接到页面顶端。这应该如何设置? 还是说我们可以更换其他组件来实现这个功能?
|
||||
|
||||
好的。我们继续来修改。
|
||||
首先,我希望这个ScrollView能撑满整个页面,这样能保持背景颜色的一致性;
|
||||
其次,我们需要对每个功能增加一些效果:
|
||||
"Upgrade to Premium" ,我们在文字的左侧需要增加一个向上的箭头图标,用户点击这段文本,弹出我们之前写好的 VIPPaymentView;
|
||||
"Feedback", 我们在文字的左侧同样加一个反馈的图标,用户点击后,调用appstore的反馈入口;
|
||||
"About",我们在文字的左侧也加一个图标,用户点击后,会弹出一个包含 Privacy Policy 和 User Terms 的页面;
|
||||
"Restore Pruchases",左侧增加一个向上的箭头图标,用户点击后,调用我们已经开发完成的 IapManager 中的 restorePurchases 方法。
|
||||
现在,请你理解需求,并在上面的代码上完成修改。
|
||||
|
||||
## Term of Use
|
||||
我们的AIGrammar应用已经开发了一段时间了。为了准备把它上架到app store应用中,我们需要准备两个文案,其中一个是用户服务条款,也就是 Term of Use。现在我们的应用会上架到除中国大陆以外的市场,它主要会包含对英语文本的语法和拼写纠错,翻译(英文到中文的互相翻译),英文单词的词典功能等。并且它会提供免费的基础服务,以及付费订阅的高级服务。除此之外,我们还希望用户可以使用他们的google或者apple账户来注册AIGrammar,这样会更好的完善付费功能与历史数据保存等。基于以上的内容,你可以用英语帮我写一篇Term of Use吗?
|
||||
|
||||
|
||||
好的,那能继续给我一个 Privacy Policy 吗?
|
||||
|
||||
|
||||
## NetworkManager
|
||||
在 NetworkManager 的 checkGrammar 函数中,它的header是这样的:
|
||||
let headers: HTTPHeaders = createAuthorizationHeader()
|
||||
|
||||
现在我们需要在headers中增加两个参数,一个是 timezone, 它是一个字符串,是用户所在的时区;另一个是 secondsfromgmt ,它表示用户所在市区与格林威治时间的差。
|
||||
请正确获取这两个参数,并把它拼接到headers中。
|
||||
另外,考虑到我们可能有若干个接口都需要增加这两个参数,所以可以把他们封装成一个函数。
|
||||
|
||||
很好。你还记得我们统一封装的网络应答吧,它是这样的:
|
||||
struct APIResponse<T: Decodable>: Decodable {
|
||||
let ret: Int
|
||||
let message: String
|
||||
let data: T?
|
||||
}
|
||||
现在我们有个问题。服务端的接口,它的data字段直接是一个json格式的数组,比如返回的是我们之前定义过的 GrammarRes 数组。
|
||||
// 确保GrammarRes遵循Codable协议,以支持JSON解析
|
||||
struct GrammarRes: Codable {
|
||||
var plain: String
|
||||
var type: String
|
||||
var reason: String
|
||||
var correction: [String]
|
||||
}
|
||||
|
||||
那么,我们应该调用 performRequest 时,应该怎么传递 completion 部分?
|
||||
|
||||
|
||||
我们根据之前编写的 NetWorkManager 类的代码,在其中增加了一个函数,它用来处理IAP的验证,代码如下:
|
||||
|
||||
// 查询VIP订单,属于 NetWorkManager 类。
|
||||
func IapVerify(receiptData: Data, appAccountToken: UUID?, productId: String, transactionId: UInt64, completion: @escaping (Result<IAPVerifyRsp, Error>) -> Void) {
|
||||
let url = globalEnvironment.iapVerifyURL
|
||||
|
||||
let parameters: [String: Any] = ["transid":transactionId, "appaccounttoken": appAccountToken ?? "", "productid":productId, "receiptData":receiptData]
|
||||
let headers: HTTPHeaders = createAuthorizationHeader()
|
||||
|
||||
performRequest(
|
||||
endpoint: url,
|
||||
parameters: parameters,
|
||||
method: .post,
|
||||
encoding: URLEncoding.httpBody,
|
||||
headers: headers, // 示例:使用JWT token
|
||||
completion: { (result: Result<IAPVerifyRsp, Error>) in
|
||||
switch result {
|
||||
case .success(let rsp):
|
||||
logger.info("verify succ: \(rsp.ret)")
|
||||
completion(.success(rsp))
|
||||
case .failure(let error):
|
||||
logger.error("Error: \(error.localizedDescription)")
|
||||
completion(.failure(error))
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
现在,我们需要在 IapManager中完成 validateReceipt 函数,它功能是调用上面的 IapVerify,并且获得其返回,根据返回结果,来控制一些界面的行为,比如弹出成功页面等。现在,请你完成代码。
|
||||
|
||||
|
||||
现在我们调整一下它的输出。如果服务器端的http响应码是200,那么它正确处理的数据格式如下:
|
||||
{
|
||||
"ret": 0,
|
||||
"message": "success",
|
||||
"data": {
|
||||
"id": 10002,
|
||||
"userid": "",
|
||||
"username": "",
|
||||
"vip": 0
|
||||
}
|
||||
}
|
||||
如果服务器端处理出错了,它会返回这样的格式:
|
||||
{
|
||||
"ret": 500,
|
||||
"message": "bad request",
|
||||
"data": nil
|
||||
}
|
||||
现在我们需要按照这个格式处理数据。处理逻辑是,如果服务器成功响应(即返回了200状态码),那么先解析ret字段,如果ret为0,那么继续匹配我们之前定义的结构体,比如:
|
||||
struct VIPStatusResponse: Codable {
|
||||
var isvip: Int
|
||||
}
|
||||
如果ret不为0,需要按照出错来处理,并不需要解析data字段。请调整你的代码。
|
||||
|
||||
|
||||
|
||||
class InitApp {
|
||||
static let shared = InitApp()
|
||||
|
||||
private let userDefaults = UserDefaults.standard
|
||||
private let deviceIDKey = "DeviceID"
|
||||
|
||||
init() {
|
||||
initializeApp()
|
||||
}
|
||||
|
||||
private func initializeApp() {
|
||||
// do something
|
||||
print("init")
|
||||
}
|
||||
}
|
||||
|
||||
这是一个用swift5编写的类。请问它的 shared 变量是什么作用? 如果我想在app启动时就进行这个类的初始化,那应该怎么调用?
|
||||
|
||||
|
||||
|
||||
|
||||
我们创建 user.go 文件,它完成我们的用户相关的功能,并被 main.go 中的echo入口函数调用。第一个功能是当用户启动app时,发送的查询请求 :
|
||||
1,函数名是 queryUserHandler , 他读取 echo框架中的 请求参数,分别是 deviceid 和 userid,类型为string;
|
||||
2,我们使用 deviceid 查询 user表,以deviceid匹配 user.DeviceID,如果查询到记录,则返回 ID,UserID,UserName; 如果查询不到,则说明该用户不存在,需要插入一条记录,user.DeviceID=deviceid;返回 ID;
|
||||
3,我们用查询到的ID,来查询 vip表,如果查询到,则返回 vip = vip.IsVIP, 如果查询不到,则 vip=0;
|
||||
4,我们定义个json结构体,作为函数的整体返回,格式为 {"userid" : ID, "username": UserName, "vip": vip}
|
||||
现在,请完成这部分的代码。
|
||||
|
||||
|
||||
|
||||
我们在使用swift5开发iOS应用。我们打算创建一个swift文件,它里面有一个initAPP类,用于执行在app启动时的各种初始化动作。包括:
|
||||
1,获取 DeviceID。如果本地的 UserDefaults 中没有数据,那么需要调用 TrustDecision 来获取DeviceID;如果 UserDefaults 中有,则直接使用;
|
||||
2,获取用户的VIP状态,它需要发起一个网络访问,我们使用 Alamofire 网络框架包,来发起查询;获取到的 VIP 状态,保存为一个内部的变量即可,这样我们每次启动都会查询一次;
|
||||
|
||||
现在,请你帮我写出 initAPP 的代码框架,并且完成初步的工作。
|
||||
|
||||
|
||||
我们需要在里面增加一个函数,它的功能是从服务器端获取用户的付费状态:
|
||||
1,后端服务器的地址是 http://localhost:1080/user/queryvip 使用POST提交,参数使用 x-www-form-urlencoded 编码。
|
||||
2,提交的参数,user 是个字符串,它是用户注册的用户名;deviceID是设备ID,它是一个字符串。
|
||||
3,服务器返回的结果,如果 http code 为200,表示正常返回,body内容为 {"isvip":"%d"}, 对应的%d就是我们要的结果;其他http code 表示为异常;
|
||||
4,使用之前写的基于 Alamofire 和 SwiftJWT 的代码,完成服务器访问,注意要处理正常和异常的返回情况,并且我们需要设定服务器访问的超时时间为10s;
|
||||
5,我们在一个 initAPP 类的函数 queryVIP 中调用上面的函数,如果正确返回,则设置 initAPP 类中的 变量 vipStatus;它是一个bool类型,对应上面body中的 isvip 的值。
|
||||
请结合已完成的NetworkManager代码,实现上述功能。
|
||||
|
||||
|
||||
好的,我们调整一下当前的实现:
|
||||
1,我们不需要使用echo框架,因为在我们的主程序中已经包含了,NewUserBenefits 只需要完成特定功能即可;
|
||||
2,我们需要修改返回内容,明确区分用户是否有权益、权益已正常消耗,以及其他的错误,为此,我们除了error,还要增加一个返回值,可以是 int,返回 0 表示成功,其他值表示失败;
|
||||
3,我们的输入参数,除了userID, timeZone之外,还需要增加一个 secondsFromGMT, 它是一个 int类型的值,表示为 传入的时区,与格林威治时间的偏移;
|
||||
4,我们增加一下代码逻辑,time.LoadLocation(timeZone) 这里增加一下错误处理,如果失败了(比如传入的timezone无法匹配等),那么 我们用 secondsFromGMT 来计算传入的时区;
|
||||
5,我们需要增加一个 query 函数,它有一个输入参数 userID,用于查询数据库中所有与之相关的key,并以json格式的数据进行返回;
|
||||
6,考虑到 redis 的处理性能问题,我们希望把当前的创建连接方法,改为有最大连接限制的连接池,每次查询时,从连接池中获取;
|
||||
请你按照上面的修改意见,继续完善代码。
|
||||
|
||||
|
||||
|
||||
我在使用apple的 IAP功能,接入storekit2,在购买接口时这样传入 appAccountToken :
|
||||
|
||||
let uuid = Product.PurchaseOption.appAccountToken(UUID.init(uuidString: "xxxxx")!)
|
||||
|
||||
let result = try await product.purchase(options: [uuid])
|
||||
|
||||
但在运行时报错了,显示:Fatal error: Unexpectedly found nil while unwrapping an Optional value 。这是为什么?如何才能正确的传入 appAccountToken ?以及如何设置appAccountToken,才能更好的完成交易?
|
||||
|
||||
|
||||
|
||||
我在打印 StoreKit2 返回的交易结果时,期望能把交易的 jsonRepresentation 整体打印出来,但是用下面的方式:
|
||||
if let receiptData = try? transaction.jsonRepresentation {
|
||||
print("Transaction Receipt: \(receiptData)")
|
||||
}
|
||||
|
||||
它的输出只是 Transaction Receipt: 769 bytes 。如何才能详细打印出 jsonRepresentation
|
||||
|
||||
|
||||
|
||||
|
||||
很棒!我已经引入了 TrustDecision,使用它来获取 DeviceID的相关代码是这样的:
|
||||
|
||||
import TrustDecision
|
||||
|
||||
var options = [String : NSObject]()
|
||||
let responseCallback: ([String : Any])-> Void = { response in
|
||||
// Response in sub-thread, do something with the response
|
||||
// Get DeviceId
|
||||
let deviceId = response["device_id"]
|
||||
// Get DeviceRiskLabel
|
||||
let deviceRisk = response["device_risk_label"]
|
||||
// Get DeviceDetail
|
||||
let deviceDetail = response["device_detail"]
|
||||
}
|
||||
options["callback"] = unsafeBitCast(responseCallback as @convention(block) ([String : Any]) -> Void, to: AnyObject.self) as? NSObject
|
||||
let manager = TDMobRiskManager.sharedManager()
|
||||
manager?.pointee.initWithOptions(options)
|
||||
|
||||
应用到我们的App中,我希望在App启动时,就调用以上的相关代码,来获取DeviceID,然后把这个DeviceID存储在一个公共的变量中,使得每个功能模块,都能很方便的使用它,但不能修改它。请帮我实现以上代码。
|
||||
|
||||
作为提醒,我们回顾一下当前的代码结构:
|
||||
一个AIGrammarApp view,用来引用 AllTabView;
|
||||
AllTabView实现了底部导航栏,它有四个功能模块:GrammarCheckView、WordsView、TranslateView、SettingsView
|
||||
|
||||
|
||||
|
||||
我们给之前写的代码加一些网络请求。当用户点击“赞”,或者“踩”的按钮时,我们发起一个Http请求,它使用POST方法,发送的参数有:
|
||||
product,值为“trans”,表示为翻译模块;
|
||||
input 和 output,分别为该点击对应的原文和译文;
|
||||
res,当动作为点赞时,为“good”,点踩时,为“bad”。
|
||||
发送之后可以不用等待应答,就返回到主应用中。这个请求的地址是 http://localhost:1080/grammar/feedback,使用x-www-form-urlencoded提交参数。
|
||||
请注意,我们希望使用 Alamofire 网络框架来实现它,并且希望请求的地址是写在配置文件中,而不是在代码里。这意味着我们可以在之前定义的 GlobalEnvironment 中加入这个变量。
|
||||
|
||||
|
||||
很好。现在我们要继续在这个请求上加上鉴权。
|
||||
我们在早些时候,写完了生成DeviceID,并把它存入全局变量的工作。我们为AF.request中加入jwt鉴权。参与鉴权的信息:
|
||||
jwt token secret 是一个变量,我们可以放在GlobalEnvironment中,它的值是your_jwt_secret
|
||||
jwt采用HS256加密,payload 是:
|
||||
{
|
||||
"deviceID": "%s",
|
||||
"gid": "%s",
|
||||
"exp1": %d
|
||||
}
|
||||
其中 deviceID 是我们之前取到的值,gid 是用户ID,目前保留为空; exp1是时间戳字段,我们设置为当前的时间戳加一天。
|
||||
|
||||
现在,我们需要把这个鉴权过程加上去,并设置合适的http header,重新发起请求。
|
||||
|
||||
|
||||
|
||||
SubmitTextEditor 的功能需求是,把用户输入的文本 inputText,提交到后端的服务器上,等服务器返回了结果之后,解析结果,并显示到界面上来。为此,我们需要:
|
||||
1,后端服务器的地址是 http://localhost:1080/grammar/translate 使用POST提交,参数使用 x-www-form-urlencoded 编码。
|
||||
2,提交的参数,input 的值是 $inputText,也就是用户输入的内容; lang 的值我们先传入字符串 ‘chs’,后面我们将处理它。
|
||||
3,服务器返回的结果,如果 http code 为200,表示正常返回,body内容为 {"translation":"%s"}, 对应的%s就是我们要的结果output;其他http code 表示为异常;
|
||||
4,使用之前写的基于 Alamofire 和 SwiftJWT 的代码,完成服务器访问,注意要处理正常和异常的返回情况,并且我们需要设定服务器访问的超时时间为10s;
|
||||
5,当服务器正常返回时,我们调用addTranslation,此时需要把返回结果output传入;如果是异常返回,弹出toast提示用户“network error,please retry later.”
|
||||
请结合刚才的代码,实现上述功能。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
TextField("word", text: $searchText, onCommit 这里,我们对 onCommit事件加上与服务器端的交互:
|
||||
1,我们读取 searchText 的值,把它作为参数提交到服务端;
|
||||
2,后端服务器的地址是 http://localhost:1080/grammar/words 使用POST提交,参数使用 x-www-form-urlencoded 编码。
|
||||
3,提交的参数,input 的值是 $searchText,也就是用户输入的内容; lang 的值我们先传入字符串 ‘eng’,后面我们将处理它。
|
||||
4,服务器返回的结果,如果 http code 为200,表示正常返回,body内容为 {"word":"$word", "explain":["$exp1", "exp2", ...], "phrase": ["$p1", "$p2", "p3", ...], "sync": ["$s1", "s2", ...]} ,我们需要解析结果,并把 explain, phrase, sync 分别赋值给 wordDefinitions, commonPhrases, synonyms。请注意,我们可能需要修改这几个变量的声明方式。
|
||||
5,当 http code 为200 以外的值时,表示为结果异常,需要弹出toast提示用户“network error,please retry later.”
|
||||
6,我们的网络交互部分,可以在刚刚完成的 NetworkManager 中添加;这样 wordsview中只需要调用接口即可,保持代码简洁。
|
||||
现在,请你理解上面的需求,并输出相关的代码。
|
||||
|
||||
|
||||
|
||||
let wordDefinitions = ["Definition 1", "Definition 2", "Definition 3", "Definition 4", "Definition 5"]
|
||||
let commonPhrases = ["Phrase 1", "Phrase 2", "Phrase 3"]
|
||||
let synonyms = ["Synonym 1", "Synonym 2", "Synonym 3"]
|
||||
|
||||
|
||||
|
||||
|
||||
很好。我们现在优化一下globalEnvironment,它现在是这样写的:
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
|
||||
class GlobalConfig : ObservableObject{
|
||||
@Published var backgroundColor : UInt = 0xFFE4E1
|
||||
|
||||
}
|
||||
|
||||
class GlobalEnvironment: ObservableObject {
|
||||
@Published var deviceID: String = ""
|
||||
|
||||
var jwtSecret: String = "your_jwt_secret"
|
||||
|
||||
// 请求地址
|
||||
var baseHost: String = "http://localhost:1080"
|
||||
var feedbackURL: String = "http://192.168.2.2:1080/grammar/feedback"
|
||||
var translateURL: String = "http://192.168.2.2:1080/grammar/translate"
|
||||
var dictURL: String = "http://192.168.2.2:1080/grammar/words"
|
||||
var grammarURL: String = "http://192.168.2.2:1080/grammar/grammar"
|
||||
}
|
||||
|
||||
// 全局实例
|
||||
let globalEnvironment = GlobalEnvironment()
|
||||
|
||||
|
||||
我们可能有多个URL地址,他们的基础路径可能是一样的,比如域名,端口等这些;所以我们不希望每个地址变量都写一遍,而是有一个baseHost定义公共的部分,后续的URL都以此为基础,加上自己的相对路径。现在,请你帮我优化一下上面的写法。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
我们要在 InputView 中的 Button("Check") 事件里,增加对服务器端的访问。整个过程是:
|
||||
1,我们读取textInput的值,把它作为参数提交到服务端;
|
||||
2,后端服务器的地址是 http://localhost:1080/grammar/grammar 使用POST提交,参数使用 x-www-form-urlencoded 编码。
|
||||
3,提交的参数,input 的值是 $textInput,也就是用户输入的内容; lang 的值我们先传入字符串 ‘eng’,后面我们将处理它。
|
||||
4,服务器返回的结果,如果 http code 为200,表示正常返回,body内容格式为 [{"plain":"%s", "type":"%s", "reason":"%s", correction":["%s", "%s"]}, {"plain":"%s", "type":"%s", "reason":"%s", "correction":["%s", "%s"]}, ……] ,这是一个json数组。我们需要解析它,并赋值给 GrammarCheckView 中的 $results。它是一个数组,格式为GrammarRes,请注意,为了适配解析,我们可能要对 GrammarRes 的定义做调整。
|
||||
5,当我们处理完服务器交互之后,可以继续 Button("Check") 里的几个现有的设置,这样,页面会切换到 ResultView,显示结果。
|
||||
6,当 http code 为200 以外的值时,表示为结果异常,需要弹出toast提示用户“network error,please retry later.”
|
||||
7,我们的网络交互部分,可以在刚刚完成的 NetworkManager 中添加;这样 wordsview中只需要调用接口即可,保持代码简洁。
|
||||
现在,请你理解上面的需求,并输出相关的代码。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
textContent
|
||||
在 ResultView 中,我们有个函数 func styledText() -> Text ,它的作用是检查结果中的字符串,并且拼接出一个完整的输出。现在我们调整一下它的实现:
|
||||
1,我们的 outstr 默认为 textContent,这意味着我们有完整的 textInput ;
|
||||
2,对results的每一次遍历,我们可以用 res.plain 去匹配 outstr,如果匹配的到,那么用 getColoredText 转换之后的字符串,替换被匹配到的 outstr 中的子串;
|
||||
3,这样遍历完毕之后,我们的到的 outstr,是完整的 textInput,并在每个results的输出部分,被做了标注,标注的方式是 getColoredText。
|
||||
4,请注意,res.plain 去匹配 outstr 的时候,我们认为每个 res.plain 出现的顺序,与其在 textInput 中出现的顺序是匹配的;这意味着,如果 results 的第一个 res.plain 被匹配到了,那么第二个 res.plain 去匹配时,无需从 outstr的开头匹配,只需从上一次匹配到的位置之后开始。
|
||||
|
||||
|
||||
它报错了。我们换个实现:
|
||||
1,首先,我们遍历 results ,使用 res.plain 去分隔 textContent,使它成为一个数组;这个数组不被 res.plain 命中的子串,使用 textContent 中的原文;
|
||||
2,被 res.plain 命中的子串,我们使用 getColoredText 转换之后的字符串,来替代它,存储到数组中;
|
||||
3,最后,我们按顺序把整个数组拼接起来。
|
||||
好了,重新实现一遍。
|
||||
|
||||
|
||||
|
||||
|
||||
我们有一个字符串 textContent,和一个由若干个textContent的子串组成的数组 results。这些子串在数组中的顺序,与其在textContent中出现的顺序一致。现在,我们的需求是,把textContent中,出现在results 中的子串,换成 getColoredText(str: res.plain, type: res.type, index: index) 的结果;而其他不匹配的子串保持不变。请使用swift5,写出你的代码。
|
||||
|
||||
举个例子:
|
||||
textContent = "This is a demo text with more complex grammar checking algorithm of the pro version. This app have been designed to help you to write correctly and appear more professional. I work really hard to make this app as god as possible. If you are happy with the results, please consider supporting the app by subscribing to the PRO plan. The text writen here is to show you how much the app is capable of with the pro version. is this something you would like to use?"
|
||||
|
||||
results =
|
||||
[{"plain":"This app have", "type":"grammar", "reason":"verb agreement error", "correction":["This app has"]},
|
||||
{"plain":"god", "type":"spell", "reason":"spelling error", "correction":["good"]},
|
||||
{"plain":"The text writen here", "type":"spell", "reason":"spelling error", "correction":["The text written here"]},
|
||||
{"plain":"is this something", "type":"grammar", "reason":"start of sentence punctuation error", "correction":["Is this something"]}]
|
||||
|
||||
|
||||
123
prompts_server.txt
Normal file
@ -0,0 +1,123 @@
|
||||
prompts_server.txt
|
||||
|
||||
现在我们需要增加一个函数 QueryUserBenefits,它的输入参数与 QueryUserBenefits 类似,ID保持一致,增加一个 datestr 参数,它的格式类似于 '20240705', 默认值是'*'。函数的作用是删除 ID:datastr的redis key,如果datestr为默认值的话,则表示全部。请完成你的代码
|
||||
|
||||
|
||||
到现在为止,我们的代码中包含了多个.go文件,并且每个文件完成了不同的功能,它还使用了 echo框架来处理http请求。
|
||||
我们想在工程里面加入日志,以更好的记录发生了什么。go.uber.org/zap 是一个高性能的日志库,github.com/natefinch/lumberjack 可以进行日志文件的切割,所以我们想把这两个引入到我们的代码中,并且对日志格式做一定的调整,比如json格式,加入日期,日志级别,打印日志的文件和代码行等等。
|
||||
现在,请你给出相关的代码。
|
||||
|
||||
根据我们使用的全局变量的logger.go版本,我们现在需要在init()时,传入一些变量,使得日志可以配置。这些变量包括lumberjack.Logger中使用的Filename, MaxSize, MaxBackups, MaxAge, Compress ,以及 atomicLevel.SetLevel 使用的日志级别。
|
||||
配置项会在config.toml中,使用我们已经实现的config.go来完成配置的读取,并且在 main.go 中获取配置,调用init()时传入。
|
||||
请注意,这里面可能会涉及到类型转换,比如把配置项中的 日志级别字符串,转换成 atomicLevel.SetLevel 所需要的枚举值。
|
||||
|
||||
|
||||
type LoggerConfig struct {
|
||||
// 在 Go 中,只有首字母大写的字段才能被外部包(如 viper)访问。
|
||||
LogFile string `mapstructure:"log_file"`
|
||||
MaxSize int `mapstructure:"max_size"`
|
||||
MaxBackups int `mapstructure:"max_backups"`
|
||||
MaxAge int `mapstructure:"max_age"`
|
||||
Compress bool `mapstructure:"compress"`
|
||||
Level string `mapstructure:"level"`
|
||||
}
|
||||
我们在config.go 中解析toml文件的上面一段,报错了,显示 toml: incomplete number 这是什么问题,应该如何解决?
|
||||
|
||||
|
||||
|
||||
for _, response := range responses {
|
||||
transantions, err := client.ParseSignedTransactions(response.SignedTransactions)
|
||||
if err != nil {
|
||||
logger.Error("ParseSignedTransactions error.", zap.Error(err))
|
||||
return c.JSON(http.StatusInternalServerError, "ParseSignedTransactions error")
|
||||
}
|
||||
logger.Debug("transantions", zap.Any("transantions", transantions)) // 打印
|
||||
//buff, _ := json.Marshal(&transantions)
|
||||
//fmt.Println(string(buff))
|
||||
}
|
||||
transantions 的类型是 []*api.JWSTransaction。现在我们想定义一个变量,它把每次for循环所产生的 transantions ,全部放到一起,形成一个大的数组。请问应该怎么写
|
||||
|
||||
|
||||
|
||||
|
||||
我们在使用golang编写服务端程序,使用echo框架处理http请求并返回给客户端。对于注册到echo上的每个处理函数,它的返回有两种,一是出错了,会返回
|
||||
echo.NewHTTPError(http.StatusBadRequest, err.Error())
|
||||
二是正常处理了请求,返回 c.JSON(http.StatusOK, map[string]string{"translation": translation})
|
||||
|
||||
现在我们想统一返回格式,以便于客户端进行正确的处理。我们希望返回的http状态码都是 200,但返回结果是 json 数据: {"ret": %d, "message":"%s", "data":%v} 其中ret为错误吗,它是一个数字,data也是json格式的数据。
|
||||
|
||||
要实现以上的功能,我们需要怎么在echo框架上注册函数?并且在每个接口处理中,应该怎么返回?
|
||||
|
||||
|
||||
我用了这种方法,然后在接口函数中返回 return echo.NewHTTPError(http.StatusBadRequest, "no benifits left."),可是最后的输出确是这样:
|
||||
{
|
||||
"message": "no benifits left."
|
||||
}
|
||||
{
|
||||
"ret": 400,
|
||||
"message": "no benifits left.",
|
||||
"data": null
|
||||
}
|
||||
为什么,是哪里出错了吗?
|
||||
|
||||
|
||||
|
||||
timezone Asia/Shanghai
|
||||
secondsfromgmt 28800
|
||||
|
||||
|
||||
// 从苹果校验订单后,插入vip表中
|
||||
func UpdateOrderByVerify(ID int, AppAcountToken string, OriginTransID string, transantion *api.JWSTransaction) error {
|
||||
// 写入vip表,如果ID对应记录不存在,则插入,否则更新
|
||||
|
||||
}
|
||||
这是我们需要完成的函数,需要把数据写入到VIP表,如果ID对应的记录不存在,则插入;否则更新;写入时,IsVIP为1,Appstore 为'Apple',ProductID 从transantion中获取,
|
||||
|
||||
CREATE TABLE aigrammar.vip (
|
||||
ID INT UNSIGNED NOT NULL,
|
||||
IsVIP INT DEFAULT 0 NULL COMMENT '1-VIP; 0-not vip',
|
||||
AppStore varchar(100) DEFAULT 'apple' NULL COMMENT 'apple;google',
|
||||
ProductID varchar(100) NULL,
|
||||
ProductType varchar(100) NULL COMMENT 'yearly;monthly;weekly;',
|
||||
Environment varchar(100) NULL COMMENT 'prod;sandbox',
|
||||
PurchaseDate TIMESTAMP NULL,
|
||||
Price INT NULL,
|
||||
Currency varchar(100) NULL,
|
||||
Storefront varchar(100) NULL COMMENT 'USA',
|
||||
ExpDate TIMESTAMP NULL,
|
||||
AutoRenew INT NULL COMMENT '1-yes;0-no',
|
||||
OriginalTransactionID varchar(100) NULL COMMENT 'applestore originalTransactionId',
|
||||
CONSTRAINT vip_pk PRIMARY KEY (ID)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8mb4
|
||||
COLLATE=utf8mb4_0900_ai_ci;
|
||||
|
||||
type JWSTransaction struct {
|
||||
TransactionID string `json:"transactionId,omitempty"`
|
||||
OriginalTransactionId string `json:"originalTransactionId,omitempty"`
|
||||
WebOrderLineItemId string `json:"webOrderLineItemId,omitempty"`
|
||||
BundleID string `json:"bundleId,omitempty"`
|
||||
ProductID string `json:"productId,omitempty"`
|
||||
SubscriptionGroupIdentifier string `json:"subscriptionGroupIdentifier,omitempty"`
|
||||
PurchaseDate int64 `json:"purchaseDate,omitempty"`
|
||||
OriginalPurchaseDate int64 `json:"originalPurchaseDate,omitempty"`
|
||||
ExpiresDate int64 `json:"expiresDate,omitempty"`
|
||||
Quantity int32 `json:"quantity,omitempty"`
|
||||
Type IAPType `json:"type,omitempty"`
|
||||
AppAccountToken string `json:"appAccountToken,omitempty"`
|
||||
InAppOwnershipType string `json:"inAppOwnershipType,omitempty"`
|
||||
SignedDate int64 `json:"signedDate,omitempty"`
|
||||
OfferType int32 `json:"offerType,omitempty"`
|
||||
OfferIdentifier string `json:"offerIdentifier,omitempty"`
|
||||
RevocationDate int64 `json:"revocationDate,omitempty"`
|
||||
RevocationReason *int32 `json:"revocationReason,omitempty"`
|
||||
IsUpgraded bool `json:"isUpgraded,omitempty"`
|
||||
Storefront string `json:"storefront,omitempty"`
|
||||
StorefrontId string `json:"storefrontId,omitempty"`
|
||||
TransactionReason TransactionReason `json:"transactionReason,omitempty"`
|
||||
Environment Environment `json:"environment,omitempty"`
|
||||
Price int64 `json:"price,omitempty"`
|
||||
Currency string `json:"currency,omitempty"`
|
||||
OfferDiscountType OfferDiscountType `json:"offerDiscountType,omitempty"`
|
||||
}
|
||||
58
server.txt
Normal file
@ -0,0 +1,58 @@
|
||||
|
||||
轻量服务器(gz):
|
||||
IP: 101.33.230.186
|
||||
pass: Oscar@123
|
||||
wordpress_username = admin
|
||||
wordpress_password = (xBwWp,C1355
|
||||
mariadb_password = J33mHT26=da!
|
||||
|
||||
|
||||
azure portal:
|
||||
francecentral
|
||||
https://grammar.openai.azure.com/
|
||||
8b68c235b737488ab9a99983a14f8cca
|
||||
0274ccde58aa47b189f0d13349885ad3
|
||||
gpt4
|
||||
gpt35
|
||||
|
||||
|
||||
硅谷服务器(ubuntu)
|
||||
49.51.178.206
|
||||
Tester@123
|
||||
|
||||
|
||||
硅谷服务器(centos)
|
||||
170.106.194.18
|
||||
Tester@123
|
||||
wordpress_username = admin
|
||||
wordpress_password = 92#9M$2VsEkx
|
||||
mariadb_password = if4Uy04.M8L5
|
||||
|
||||
|
||||
腾讯云代码仓库
|
||||
oscar@easyprompt8.com
|
||||
Oscar@123
|
||||
|
||||
|
||||
传文件
|
||||
scp aigrammar ubuntu@49.51.178.206:/usr/local/aigrammar/
|
||||
|
||||
|
||||
# 启动
|
||||
sudo systemctl start nginx
|
||||
|
||||
# 加入到开机自启
|
||||
sudo systemctl enable nginx
|
||||
|
||||
# 输出状态
|
||||
sudo systemctl status nginx
|
||||
|
||||
# 停止
|
||||
sudo systemctl stop nginx
|
||||
|
||||
# 重新加载
|
||||
sudo systemctl reload nginx
|
||||
|
||||
# 配置文件
|
||||
sudo vi /etc/nginx/conf.d/dev.easyprompt8.com.conf
|
||||
|
||||
42
website/about/index.html
Normal file
@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>About AIGrammar</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
background-color: #f4f4f4;
|
||||
color: #333;
|
||||
}
|
||||
.container {
|
||||
text-align: center;
|
||||
}
|
||||
a {
|
||||
color: #007BFF;
|
||||
text-decoration: none;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.spacer {
|
||||
height: 20px; /* 空行的高度 */
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<a href="./terms.html">Term of Use</a>
|
||||
<div class="spacer"></div>
|
||||
<a href="./privacy.html">Privacy Policy</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
73
website/about/privacy.html
Normal file
@ -0,0 +1,73 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AIGrammar - Privacy Policy</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f4;
|
||||
color: #333;
|
||||
}
|
||||
.container {
|
||||
width: 80%;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
h1, h2 {
|
||||
color: #007BFF;
|
||||
}
|
||||
p {
|
||||
line-height: 1.6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Privacy Policy</h1>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>Welcome to AIGrammar. This Privacy Policy explains how we collect, use, disclose, and protect your information when you use our application ("App"). By using the App, you agree to the collection and use of information in accordance with this policy. If you do not agree with the terms of this Privacy Policy, please do not use the App.</p>
|
||||
|
||||
<h2>1. Information We Collect</h2>
|
||||
<p><strong>1.1 Personal Information:</strong> When you register for an account or use our services, we may collect personal information such as your name, email address, and account details.</p>
|
||||
<p><strong>1.2 Usage Data:</strong> We collect information about your interactions with the App, including the features you use, the content you view, and the actions you take.</p>
|
||||
<p><strong>1.3 Device Information:</strong> We collect information about the device you use to access the App, including the device type, operating system, and unique device identifiers.</p>
|
||||
<p><strong>1.4 Log Data:</strong> Our servers automatically collect log data when you access the App. This may include your IP address, browser type, and other usage information.</p>
|
||||
|
||||
<h2>2. How We Use Your Information</h2>
|
||||
<p><strong>2.1 To Provide and Maintain Our Services:</strong> We use your information to operate, maintain, and improve the App.</p>
|
||||
<p><strong>2.2 To Communicate with You:</strong> We may use your information to communicate with you about your account, our services, and promotional offers.</p>
|
||||
<p><strong>2.3 To Personalize Your Experience:</strong> We use your information to personalize your experience and provide content and features that match your interests.</p>
|
||||
<p><strong>2.4 To Improve Our Services:</strong> We analyze usage data and feedback to improve our services and develop new features.</p>
|
||||
<p><strong>2.5 To Protect Our Services:</strong> We use your information to detect and prevent fraud, abuse, and other harmful activities.</p>
|
||||
|
||||
<h2>3. Sharing Your Information</h2>
|
||||
<p><strong>3.1 Service Providers:</strong> We may share your information with third-party service providers who perform services on our behalf, such as hosting, data analysis, and customer support.</p>
|
||||
<p><strong>3.2 Legal Requirements:</strong> We may disclose your information if required by law or in response to valid requests by public authorities.</p>
|
||||
<p><strong>3.3 Business Transfers:</strong> In the event of a merger, acquisition, or sale of assets, your information may be transferred as part of the transaction.</p>
|
||||
<p><strong>3.4 With Your Consent:</strong> We may share your information with your consent or at your direction.</p>
|
||||
|
||||
<h2>4. Data Security</h2>
|
||||
<p>We take reasonable measures to protect your information from unauthorized access, use, or disclosure. However, no internet or email transmission is ever fully secure or error-free.</p>
|
||||
|
||||
<h2>5. Your Rights</h2>
|
||||
<p>You have the right to access, update, and delete your personal information. You can manage your account settings and preferences within the App or by contacting us at support@aigrammar.com.</p>
|
||||
|
||||
<h2>6. Children's Privacy</h2>
|
||||
<p>Our services are not intended for use by children under the age of 13. We do not knowingly collect personal information from children under 13. If we become aware that we have collected personal information from a child under 13, we will take steps to delete such information.</p>
|
||||
|
||||
<h2>7. Changes to This Privacy Policy</h2>
|
||||
<p>We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on the App. Your continued use of the App after the changes have been posted constitutes your acceptance of the new Privacy Policy.</p>
|
||||
|
||||
<h2>8. Contact Us</h2>
|
||||
<p>If you have any questions about this Privacy Policy, please contact us at service@easyprompt8.com</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
76
website/about/terms.html
Normal file
@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AIGrammar - Term of Use</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background-color: #f4f4f4;
|
||||
color: #333;
|
||||
}
|
||||
.container {
|
||||
width: 80%;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
h1, h2 {
|
||||
color: #007BFF;
|
||||
}
|
||||
p {
|
||||
line-height: 1.6;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h1>Term of Use</h1>
|
||||
<h2>Welcome to AIGrammar</h2>
|
||||
<p>These Terms of Use ("Terms") govern your use of the AIGrammar application ("App"), which is designed to provide grammar and spelling correction, translation services (English to Chinese and vice versa), and dictionary features for English words. By accessing or using the App, you agree to be bound by these Terms. If you do not agree with these Terms, please do not use the App.</p>
|
||||
|
||||
<h2>1. Services Provided</h2>
|
||||
<p><strong>1.1 Grammar and Spelling Correction:</strong> The App offers tools to correct grammar and spelling errors in English texts.</p>
|
||||
<p><strong>1.2 Translation Services:</strong> The App provides translation services between English and Chinese.</p>
|
||||
<p><strong>1.3 Dictionary Features:</strong> Users can look up English words, their definitions, and synonyms.</p>
|
||||
<p><strong>1.4 Subscription Services:</strong> In addition to the free basic services, the App offers premium services through a subscription model.</p>
|
||||
|
||||
<h2>2. Account Registration</h2>
|
||||
<p><strong>2.1 Google and Apple Account Registration:</strong> Users can register and log in to the App using their Google or Apple accounts.</p>
|
||||
<p><strong>2.2 User Responsibilities:</strong> You are responsible for maintaining the confidentiality of your account credentials and for all activities that occur under your account.</p>
|
||||
|
||||
<h2>3. Subscription and Payment</h2>
|
||||
<p><strong>3.1 Subscription Plans:</strong> The App offers various subscription plans for premium services. Details of the subscription plans are provided within the App.</p>
|
||||
<p><strong>3.2 Payment:</strong> Payment for subscriptions can be made through the App Store. All payments are subject to the terms and conditions of the App Store.</p>
|
||||
<p><strong>3.3 Cancellation:</strong> You can cancel your subscription at any time through your App Store account settings.</p>
|
||||
|
||||
<h2>4. User Conduct</h2>
|
||||
<p><strong>4.1 Acceptable Use:</strong> You agree to use the App only for lawful purposes and in accordance with these Terms.</p>
|
||||
<p><strong>4.2 Prohibited Activities:</strong> You agree not to engage in any activity that interferes with or disrupts the App or its services.</p>
|
||||
|
||||
<h2>5. Intellectual Property</h2>
|
||||
<p><strong>5.1 Ownership:</strong> The App and its content, features, and functionality are owned by AIGrammar and its licensors.</p>
|
||||
<p><strong>5.2 Restrictions:</strong> You may not copy, modify, distribute, sell, or lease any part of the App.</p>
|
||||
|
||||
<h2>6. Privacy</h2>
|
||||
<p>Your use of the App is also governed by our <a href="./privacy.html" >Privacy Policy.</a> </p>
|
||||
|
||||
<h2>7. Termination</h2>
|
||||
<p>We reserve the right to terminate or suspend your access to the App at any time, without notice, for conduct that we believe violates these Terms or is harmful to other users of the App.</p>
|
||||
|
||||
<h2>8. Limitation of Liability</h2>
|
||||
<p>To the fullest extent permitted by law, AIGrammar shall not be liable for any indirect, incidental, special, consequential, or punitive damages, or any loss of profits or revenues, whether incurred directly or indirectly, or any loss of data, use, goodwill, or other intangible losses, resulting from your use of the App.</p>
|
||||
|
||||
<h2>9. Changes to the Terms</h2>
|
||||
<p>We may modify these Terms from time to time. We will notify you of any changes by posting the new Terms on the App. Your continued use of the App after the changes have been posted constitutes your acceptance of the new Terms.</p>
|
||||
|
||||
<h2>10. Contact Us</h2>
|
||||
<p>If you have any questions about these Terms, please contact us at service@easyprompt8.com</p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
98
website/api.easyprompt8.com.conf
Normal file
@ -0,0 +1,98 @@
|
||||
##
|
||||
# You should look at the following URL's in order to grasp a solid understanding
|
||||
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
||||
# https://www.nginx.com/resources/wiki/start/
|
||||
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
|
||||
# https://wiki.debian.org/Nginx/DirectoryStructure
|
||||
#
|
||||
# In most cases, administrators will remove this file from sites-enabled/ and
|
||||
# leave it as reference inside of sites-available where it will continue to be
|
||||
# updated by the nginx packaging team.
|
||||
#
|
||||
# This file will automatically load configuration files provided by other
|
||||
# applications, such as Drupal or Wordpress. These applications will be made
|
||||
# available underneath a path with that package name, such as /drupal8.
|
||||
#
|
||||
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
|
||||
##
|
||||
|
||||
|
||||
server {
|
||||
#SSL 默认访问端口号为 443
|
||||
listen 443 ssl;
|
||||
|
||||
#请填写绑定证书的域名
|
||||
server_name api.easyprompt8.com;
|
||||
|
||||
#请填写证书文件的相对路径或绝对路径
|
||||
ssl_certificate ./crt/api.easyprompt8.com_bundle.crt;
|
||||
|
||||
#请填写私钥文件的相对路径或绝对路径
|
||||
ssl_certificate_key ./crt/api.easyprompt8.com.key;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
#请按照以下协议配置
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
location /iap/callback {
|
||||
rewrite ^/iap/callback /pub/iap/callback break;
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~* ^/iap/((?!callback).*)$ {
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
# location /iap/ {
|
||||
location ~* ^/(pub|grammar|user)/ {
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
error_log /var/log/nginx/api_aigrammar_error.log;
|
||||
access_log /var/log/nginx/api_aigrammar_access.log;
|
||||
|
||||
|
||||
location / {
|
||||
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
|
||||
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
|
||||
root /var/www/html;
|
||||
index index.html index.htm index.nginx-debian.html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Virtual Host configuration for example.com
|
||||
#
|
||||
# You can move that to a different file under sites-available/ and symlink that
|
||||
# to sites-enabled/ to enable it.
|
||||
#
|
||||
#server {
|
||||
# listen 80;
|
||||
# listen [::]:80;
|
||||
#
|
||||
# server_name example.com;
|
||||
#
|
||||
# root /var/www/example.com;
|
||||
# index index.html;
|
||||
#
|
||||
# location / {
|
||||
# try_files $uri $uri/ =404;
|
||||
# }
|
||||
#}
|
||||
BIN
website/api.easyprompt8.com_nginx.zip
Normal file
19
website/api.easyprompt8.com_nginx/api.easyprompt8.com.csr
Normal file
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIDBjCCAe4CAQAwgY8xCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRAw
|
||||
DgYDVQQHEwdCZWlqaW5nMQ8wDQYDVQQKEwZxY2xvdWQxDzANBgNVBAsTBnFjbG91
|
||||
ZDEcMBoGA1UEAxMTYXBpLmVhc3lwcm9tcHQ4LmNvbTEcMBoGA1UEBRMTNjA0MDcw
|
||||
OTMyMzMzMDk2OTg5ODCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAK78
|
||||
qfQYzTMKn781PluGmTqrqyNXAbjSZiwLWW7CriXe1XwqQkZw4sSeM+Ih1rkfp2mP
|
||||
ocZ+Gv9zXuDFuiRxy8ouYE5ACXE760Xv9PqzZJlQzD87y3y/4ISGQ1HzagQzRysn
|
||||
TAlus3tqtc5eO/TCfYLDBBJKgZ3RCQiGQyMaeYOG0tAL+WGLG5VWY7qrabmmAvfN
|
||||
lyf1gv/RvL6mVdT5Jaq1cUrhYrqGH6YbEd1IG9JGQJ6FWAwgLF1s09YW5sDhhhHM
|
||||
6dKLUN4+0zo7m/nN4PivsQJUXYqH/hry2dlanfmcp+Kr787+5Y6tyuOKsU4Yyhvd
|
||||
lIO7n/AWioIxLO5bAJkCAwEAAaAxMC8GCSqGSIb3DQEJDjEiMCAwHgYDVR0RBBcw
|
||||
FYITYXBpLmVhc3lwcm9tcHQ4LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAOKrBzwtK
|
||||
7/ZMNsKD4suIXlDJOtbZAe/BI7RUkhvPzLkWuA/PNn32am9vHrnhfPVQjWM0hnri
|
||||
nfJM9ZeWvIcvBSQ3H1xXzAGpClAhqo8jtLIFdhJzunTUk4pN5neZOcWT8B3hdTpJ
|
||||
lKLB4ui127u0jn0sGnrN4rb3FkoJ8l+2sS1a3Ath0tJ+PtW/fhK3Ai0r1eZPBfQO
|
||||
umx9fAC0+LEH0WALMyZQp0Oeam+wIE7so28BjtwJMS/auZnoRfQtCJioWyt2ynBI
|
||||
y8+gxvKQFBqppLljUFbX7iKIbG/GKJche9McS6OZhZbic9QB6GBzX11je9LCS3pi
|
||||
jucSBjNQ9ooUuQ==
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
27
website/api.easyprompt8.com_nginx/api.easyprompt8.com.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpAIBAAKCAQEArvyp9BjNMwqfvzU+W4aZOqurI1cBuNJmLAtZbsKuJd7VfCpC
|
||||
RnDixJ4z4iHWuR+naY+hxn4a/3Ne4MW6JHHLyi5gTkAJcTvrRe/0+rNkmVDMPzvL
|
||||
fL/ghIZDUfNqBDNHKydMCW6ze2q1zl479MJ9gsMEEkqBndEJCIZDIxp5g4bS0Av5
|
||||
YYsblVZjuqtpuaYC982XJ/WC/9G8vqZV1PklqrVxSuFiuoYfphsR3Ugb0kZAnoVY
|
||||
DCAsXWzT1hbmwOGGEczp0otQ3j7TOjub+c3g+K+xAlRdiof+GvLZ2Vqd+Zyn4qvv
|
||||
zv7ljq3K44qxThjKG92Ug7uf8BaKgjEs7lsAmQIDAQABAoIBABBTHf/ZuHsEiLar
|
||||
3u9m9TCWB1c6rLxzVHjTbjp5CwoZac01nA06Rs2U/L4h7ghDPbkJX0xHQ3mFZ9qM
|
||||
V7tCqoJoJS/npXnc3ywdILuqtL3g3c0gZPF0bRuv8uPYU5GkvwT1m5BdtXzUDbX8
|
||||
8Jb69f6W9vBF5yWz9KXI8MZ7l85/Q97P9r/h3sZQTXRzQQjm6Gzr3OGHSGklLref
|
||||
70I/IFr+T7/0t1rTpNTWIgBt3y1gfUjPAP/h1bSKkEjfKno40pnk+2KeeQGcPe5/
|
||||
6sDU5uWFWN85Tvhu6eAKWasNG2KlwbPgZ7h7lxPThEvR2sQB8/TjuCRDxmceKqOX
|
||||
Ygw23OkCgYEA47P5btV8dNnRd6HDq8U8sOZpu9oYEsq1h9iSajXXqyhqCQiiMK6e
|
||||
CF8KyFhLWnfLCDkXOzj6cmZUp40Fv26rO3rEDhguVgm9V4I5vLvUcKOl3RaZiVoc
|
||||
Lqc1o7KH4knx/5H6BK3nSIzW4u7LupmxQV63jCuior6a7aovFRzsA5cCgYEAxLub
|
||||
urSQAWrqAkHoxLs3xfltfstjQs0ejqL5FfzSfALlCwrfrKoNygwRl4swhkNMduW2
|
||||
DiH/Y8dZn/UDR5ZoVbKabrZZenMlIoCTh/OKvjHbQCz1GvZPEuiM0hrQye7CrUV4
|
||||
EcfvhOnytBBKdCgFuYZ6fD552dESW9605ddB408CgYEAu+rd4bBiQ/U3P6nK2Emw
|
||||
qrWdcSCuWWPdqLz9KJZC5Mg3qjjr0Y1qcrItLeZgWcsfTiv/liqR1jPJjXV+1tu4
|
||||
iR/qCU+/fdYP4tZgW/gPfN4xlmJ+V7J8K6xnQi+moQQxqZ+JXK9Afsls1mAI1njc
|
||||
pnxKsm2YjQMMzTN0I9J4nQUCgYBz0JIT7rob64nJPG3AawqhZH4eN7O+nqxPggeq
|
||||
9wQed0HJJ2SX7CBkAojUst8lGzdHg2GSnlcPsUrEzONaYGQZlyQs6vJwEJsa3aB8
|
||||
V1YlM4qEFDNS5Q+V7QsBoUGqrwEyKgROS2poz6TOdgyupuT/2/f9bnYjUV5CcTAD
|
||||
Yp5qJwKBgQCggn69LomQuCqAD0yf/Adu5guycRkIGI1kFeHFh9JjQGAjp9KerLxH
|
||||
73jNWIeMsVmLd6fNZ/0nm1/+hOUGQ81pkZA1f64bNxGKZkdkl1kDfHTTOQXYGaQb
|
||||
09UHPqCM+9sn7KEWTRsa+AvPvTZYZWsgDOsCc3M4TTYU6BTMc4VqrQ==
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@ -0,0 +1,63 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF9TCCBF2gAwIBAgIQU6lc/OHZRHICpAP1Pq66VDANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
ODA4MDAwMDAwWhcNMjQxMTA2MjM1OTU5WjAeMRwwGgYDVQQDExNhcGkuZWFzeXBy
|
||||
b21wdDguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArvyp9BjN
|
||||
MwqfvzU+W4aZOqurI1cBuNJmLAtZbsKuJd7VfCpCRnDixJ4z4iHWuR+naY+hxn4a
|
||||
/3Ne4MW6JHHLyi5gTkAJcTvrRe/0+rNkmVDMPzvLfL/ghIZDUfNqBDNHKydMCW6z
|
||||
e2q1zl479MJ9gsMEEkqBndEJCIZDIxp5g4bS0Av5YYsblVZjuqtpuaYC982XJ/WC
|
||||
/9G8vqZV1PklqrVxSuFiuoYfphsR3Ugb0kZAnoVYDCAsXWzT1hbmwOGGEczp0otQ
|
||||
3j7TOjub+c3g+K+xAlRdiof+GvLZ2Vqd+Zyn4qvvzv7ljq3K44qxThjKG92Ug7uf
|
||||
8BaKgjEs7lsAmQIDAQABo4ICcjCCAm4wHwYDVR0jBBgwFoAUXzp8ERB+DGdxYdyL
|
||||
o7UAA2f1VxwwHQYDVR0OBBYEFEqHxb0vjDhHmNp8rmo8sgHkPHDUMA4GA1UdDwEB
|
||||
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
|
||||
BQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIxMCUwIwYIKwYBBQUHAgEWF2h0
|
||||
dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB9BggrBgEFBQcBAQRxMG8w
|
||||
QgYIKwYBBQUHMAKGNmh0dHA6Ly9jcnQudHJ1c3QtcHJvdmlkZXIuY24vVHJ1c3RB
|
||||
c2lhUlNBRFZUTFNDQUcyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL29jc3AudHJ1
|
||||
c3QtcHJvdmlkZXIuY24wggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgB2/4g/Crb7
|
||||
lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6dAAAAZExpcB8AAAEAwBHMEUCICrkS+w7
|
||||
TDM2pfX9jVmC+TPYt30WicTcl5PLnGEKh7iIAiEAwPXO5r4eAFXAd6nRLsWQZlI6
|
||||
VLKeMlcp3lHoghh7VVEAdQA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF7Phk
|
||||
bgAAAZExpcA/AAAEAwBGMEQCIDaSJLwmJkBe3P5hFQGEEQl4yOdFunm6ovGeKkps
|
||||
4YqkAiBEwGw8Wztd0d6Gcxln93Gc8Rw1I4OZdvUDaaC2TVQD3zAeBgNVHREEFzAV
|
||||
ghNhcGkuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IBgQAgUjBTbSF1
|
||||
ojnPYYKgp8v0Zp2W6b6Kxwq45Bo1T0jTCI1fgUtJUOhCe7CiYE7jCj2Jd3xsbssQ
|
||||
ZYbtEVOXg98fi9aKSrqoQqgyHHicJ6IJDVJzx1X+WjE/A9qlIWn08ELfA0cPe1eR
|
||||
dW0qxntcAI9s1QFQj9lO4j//YOz4hUwCE5dnvt9GT0aaPjzuRwWjHbJUgY8Svq7g
|
||||
b0v7KT7GyJ4oblTZIrAeXk4e+f4o0jc5SK48gIRmbrghH1OZ52Uq3Jt+3dkgYwGU
|
||||
WBX46L+4/bucpq+GXUZjxw6LCJqAW+A3iT1NmqlWj+bZHdxLpUk2rOJ8YQx0y5i4
|
||||
YVryMefLekDHBTODlg9FkhthFk7k6waSTvoqGvsXOS8Nm7nsDN1vgJHnk9Ssyg4c
|
||||
WcQdDuS6dLhZ10fUnbGFk+ohhv8CdZjYco2asg84UHYPYrM8OUtssguRuV4cJxS9
|
||||
TQGtzyYMkM38UU1DvxI2jXU7VHaj1vXxLUWVFm3WC5Z/qo1ExTEzBOA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,63 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF9TCCBF2gAwIBAgIQU6lc/OHZRHICpAP1Pq66VDANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
ODA4MDAwMDAwWhcNMjQxMTA2MjM1OTU5WjAeMRwwGgYDVQQDExNhcGkuZWFzeXBy
|
||||
b21wdDguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArvyp9BjN
|
||||
MwqfvzU+W4aZOqurI1cBuNJmLAtZbsKuJd7VfCpCRnDixJ4z4iHWuR+naY+hxn4a
|
||||
/3Ne4MW6JHHLyi5gTkAJcTvrRe/0+rNkmVDMPzvLfL/ghIZDUfNqBDNHKydMCW6z
|
||||
e2q1zl479MJ9gsMEEkqBndEJCIZDIxp5g4bS0Av5YYsblVZjuqtpuaYC982XJ/WC
|
||||
/9G8vqZV1PklqrVxSuFiuoYfphsR3Ugb0kZAnoVYDCAsXWzT1hbmwOGGEczp0otQ
|
||||
3j7TOjub+c3g+K+xAlRdiof+GvLZ2Vqd+Zyn4qvvzv7ljq3K44qxThjKG92Ug7uf
|
||||
8BaKgjEs7lsAmQIDAQABo4ICcjCCAm4wHwYDVR0jBBgwFoAUXzp8ERB+DGdxYdyL
|
||||
o7UAA2f1VxwwHQYDVR0OBBYEFEqHxb0vjDhHmNp8rmo8sgHkPHDUMA4GA1UdDwEB
|
||||
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
|
||||
BQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIxMCUwIwYIKwYBBQUHAgEWF2h0
|
||||
dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB9BggrBgEFBQcBAQRxMG8w
|
||||
QgYIKwYBBQUHMAKGNmh0dHA6Ly9jcnQudHJ1c3QtcHJvdmlkZXIuY24vVHJ1c3RB
|
||||
c2lhUlNBRFZUTFNDQUcyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL29jc3AudHJ1
|
||||
c3QtcHJvdmlkZXIuY24wggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgB2/4g/Crb7
|
||||
lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6dAAAAZExpcB8AAAEAwBHMEUCICrkS+w7
|
||||
TDM2pfX9jVmC+TPYt30WicTcl5PLnGEKh7iIAiEAwPXO5r4eAFXAd6nRLsWQZlI6
|
||||
VLKeMlcp3lHoghh7VVEAdQA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF7Phk
|
||||
bgAAAZExpcA/AAAEAwBGMEQCIDaSJLwmJkBe3P5hFQGEEQl4yOdFunm6ovGeKkps
|
||||
4YqkAiBEwGw8Wztd0d6Gcxln93Gc8Rw1I4OZdvUDaaC2TVQD3zAeBgNVHREEFzAV
|
||||
ghNhcGkuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IBgQAgUjBTbSF1
|
||||
ojnPYYKgp8v0Zp2W6b6Kxwq45Bo1T0jTCI1fgUtJUOhCe7CiYE7jCj2Jd3xsbssQ
|
||||
ZYbtEVOXg98fi9aKSrqoQqgyHHicJ6IJDVJzx1X+WjE/A9qlIWn08ELfA0cPe1eR
|
||||
dW0qxntcAI9s1QFQj9lO4j//YOz4hUwCE5dnvt9GT0aaPjzuRwWjHbJUgY8Svq7g
|
||||
b0v7KT7GyJ4oblTZIrAeXk4e+f4o0jc5SK48gIRmbrghH1OZ52Uq3Jt+3dkgYwGU
|
||||
WBX46L+4/bucpq+GXUZjxw6LCJqAW+A3iT1NmqlWj+bZHdxLpUk2rOJ8YQx0y5i4
|
||||
YVryMefLekDHBTODlg9FkhthFk7k6waSTvoqGvsXOS8Nm7nsDN1vgJHnk9Ssyg4c
|
||||
WcQdDuS6dLhZ10fUnbGFk+ohhv8CdZjYco2asg84UHYPYrM8OUtssguRuV4cJxS9
|
||||
TQGtzyYMkM38UU1DvxI2jXU7VHaj1vXxLUWVFm3WC5Z/qo1ExTEzBOA=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
98
website/dev.easyprompt8.com.conf
Normal file
@ -0,0 +1,98 @@
|
||||
##
|
||||
# You should look at the following URL's in order to grasp a solid understanding
|
||||
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
||||
# https://www.nginx.com/resources/wiki/start/
|
||||
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
|
||||
# https://wiki.debian.org/Nginx/DirectoryStructure
|
||||
#
|
||||
# In most cases, administrators will remove this file from sites-enabled/ and
|
||||
# leave it as reference inside of sites-available where it will continue to be
|
||||
# updated by the nginx packaging team.
|
||||
#
|
||||
# This file will automatically load configuration files provided by other
|
||||
# applications, such as Drupal or Wordpress. These applications will be made
|
||||
# available underneath a path with that package name, such as /drupal8.
|
||||
#
|
||||
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
|
||||
##
|
||||
|
||||
|
||||
server {
|
||||
#SSL 默认访问端口号为 443
|
||||
listen 443 ssl;
|
||||
|
||||
#请填写绑定证书的域名
|
||||
server_name dev.easyprompt8.com;
|
||||
|
||||
#请填写证书文件的相对路径或绝对路径
|
||||
ssl_certificate ./crt/dev.easyprompt8.com_bundle.crt;
|
||||
|
||||
#请填写私钥文件的相对路径或绝对路径
|
||||
ssl_certificate_key ./crt/dev.easyprompt8.com.key;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
#请按照以下协议配置
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
location /iap/callback {
|
||||
rewrite ^/iap/callback /pub/iap/callback break;
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location ~* ^/iap/((?!callback).*)$ {
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
# location /iap/ {
|
||||
location ~* ^/(pub|grammar|user)/ {
|
||||
proxy_pass http://localhost:8090;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
error_log /var/log/nginx/dev_aigrammar_error.log;
|
||||
access_log /var/log/nginx/dev_aigrammar_access.log;
|
||||
|
||||
|
||||
location / {
|
||||
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
|
||||
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
|
||||
root /var/www/html;
|
||||
index index.html index.htm index.nginx-debian.html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Virtual Host configuration for example.com
|
||||
#
|
||||
# You can move that to a different file under sites-available/ and symlink that
|
||||
# to sites-enabled/ to enable it.
|
||||
#
|
||||
#server {
|
||||
# listen 80;
|
||||
# listen [::]:80;
|
||||
#
|
||||
# server_name example.com;
|
||||
#
|
||||
# root /var/www/example.com;
|
||||
# index index.html;
|
||||
#
|
||||
# location / {
|
||||
# try_files $uri $uri/ =404;
|
||||
# }
|
||||
#}
|
||||
BIN
website/dev.easyprompt8.com_nginx.zip
Normal file
19
website/dev.easyprompt8.com_nginx/dev.easyprompt8.com.csr
Normal file
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIDBjCCAe4CAQAwgY8xCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRAw
|
||||
DgYDVQQHEwdCZWlqaW5nMQ8wDQYDVQQKEwZxY2xvdWQxDzANBgNVBAsTBnFjbG91
|
||||
ZDEcMBoGA1UEAxMTZGV2LmVhc3lwcm9tcHQ4LmNvbTEcMBoGA1UEBRMTNTc4NDc2
|
||||
Njk1MTAwMDI3MDUwOTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3l
|
||||
c1ZidUjux1JnSZ6PAWGcMML8FmZkHNKpXTFKpECSEIwlsSN4oM04Px190chRar2K
|
||||
03H1dCXtdsxSF/uCfVwGCexaFn1c1lWJfzn8/JrTwEu4sj3g1kpEu1hkwWePQo7/
|
||||
Ue/i1lAgnavdrNSgc/sGV2BiS3QymcvWClAO+EQ5AUylgB7+j53vY5TZF7s7AK3K
|
||||
KhnwdqLwM6o1hN/ENGWxIAj9lSDK8SMy5VNQr1TqfHFaKp+9oYPjV/6LGE1sZuq9
|
||||
SEmR7lk/J+jDGLVJVdgSbuLUQ+Y1kgxr6wIUTCZqn6GpU49UPZNC1YWQtYFF0Mbd
|
||||
nQrGluoTLLmXFaefYxkCAwEAAaAxMC8GCSqGSIb3DQEJDjEiMCAwHgYDVR0RBBcw
|
||||
FYITZGV2LmVhc3lwcm9tcHQ4LmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAbOOic75Z
|
||||
yO8FZ6CJXU5q9U8cAnhWL5pvi9MYMZ5+DDbX7Ey/0Zxkff6PcpksBv7RKQBzgFnk
|
||||
b38rbfdgFjAfpUAI8xhjMDd5FTrXLJWh3mxgZL/hwYlmzkFDnDlETpPhCFjcoDab
|
||||
FKxWtmU5O4wQsjOHRb7lqLI7F1EnBxmGQs3AKlJypqseKiwW0WoR/NKSrj1gJ/TU
|
||||
McbqNC4AVsk7o1hxQGhPrP0VABklWANsxUM/K/tsonXTTL2CfaocKA6XvgRb03Hp
|
||||
G7+GSVPJmOxcXij3WB2tnu8l4AAkzJMtOOnuxd96uVYzw+SRNIlHNberFwzwzA2o
|
||||
niUghUlAvNrMag==
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
27
website/dev.easyprompt8.com_nginx/dev.easyprompt8.com.key
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEAveVzVmJ1SO7HUmdJno8BYZwwwvwWZmQc0qldMUqkQJIQjCWx
|
||||
I3igzTg/HX3RyFFqvYrTcfV0Je12zFIX+4J9XAYJ7FoWfVzWVYl/Ofz8mtPAS7iy
|
||||
PeDWSkS7WGTBZ49Cjv9R7+LWUCCdq92s1KBz+wZXYGJLdDKZy9YKUA74RDkBTKWA
|
||||
Hv6Pne9jlNkXuzsArcoqGfB2ovAzqjWE38Q0ZbEgCP2VIMrxIzLlU1CvVOp8cVoq
|
||||
n72hg+NX/osYTWxm6r1ISZHuWT8n6MMYtUlV2BJu4tRD5jWSDGvrAhRMJmqfoalT
|
||||
j1Q9k0LVhZC1gUXQxt2dCsaW6hMsuZcVp59jGQIDAQABAoIBAB2Drht9DhGZ2yz5
|
||||
lL2qKGLNbd7AY5LieIBdhniEy2alzSCbMx76PrPmzBh/V720ucxf6WFK7xR+BfrX
|
||||
v5Z9v5Iv9hbgIaK2bTG6PyX6JiDCTJ74Q+vOKEA+0od4kX7RC11CXa/VJ84oY5k0
|
||||
yQn7LkuTvrziSivzOWgvCkdLLFcd6HdABA4wqrkliiWs6plROGzFNmXegcOAhVnE
|
||||
9WUmmI4wSrW4uErGGkXtHYIiSDfZw9CMUI4sfHuCfGqruc55NrX8m1b2bwpKISfu
|
||||
+UoceHf9P1WiXted0sRSSJ74nO4nn/eO4IQsxC184lxMW1/aa06jEWT6BeDFtcY+
|
||||
ZBu5JwECgYEA5boG3dBb0WS2TwQ5adW6gn17mgqAv/X+xwQRV8Vy4+Y3bbOhP2no
|
||||
JCLY5P3liHkG0w/BmGCYGk7eudKE0KXGtPWhcq/8QcuMwYtA4Vel20hwD1o0FFVG
|
||||
G8iaz7fgIRxrlri1C83DaFbrAgWTZbVIAM+XY/fS4hEoz4o5jY7ySvECgYEA051D
|
||||
hVlsr2Znl+CEuvWkPOUE2EOWun7XxI4oN+g0Himzrg+BrnHpj20KPq5km8WsLWtx
|
||||
1uV/b5UmmVFEch+0cXzKkpuAHDlsWCN/35Ngwy66+ERfiG9kUZFZc7mPZtXOoGER
|
||||
B7ElqLHJLX62/8UCghQq0+OqzPRe3VyzRmWmiqkCgYAkcc+3DuASJxUZEgV9uc99
|
||||
9iROus3UJlWGAyoxL3zblOFEQRQauFWArhqUsYbhkLm5cC15XBGlUs/Y0QILC9Gr
|
||||
UbCMPkkZsw4gglQHq9z/Hc3RUbEjbKfTro6I15XyCs0yuxjVx43xlqBv0KyinRDQ
|
||||
OB6/WEiXXruHuVkKERx1MQKBgFxr8AR6lPRaRl5XycCZ7jxGTgJiKp+TLIuFBt28
|
||||
BZ8y2W3pCdt1lut0VSghJIHAKL3BknunyiuiubP2gW1SmY2DUjoLvj0Ve1NXVc8A
|
||||
4B7+9tvdiNfexrK1R5s6bP4d3VvAaR6x6N+vnkzHbgdxNPI4+qeGZJ+VDyWhCg9x
|
||||
7/XZAoGAWfd0+jKWVkfa7c9dtPVEwKFF3BGbxNWzGGJeH3bQCHPbUBdaLrwW/JmK
|
||||
oZqjJJ8lKjCIt2n6MFKoqg9VOdqJ7w5c4i9VKx5+w/wksbs2xdedvy1Ot4QsWs2N
|
||||
He2xsb8SDYxqMnYhQYA9pyIne98Axsg5E8hkpxgwnn8Iv3KhSks=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@ -0,0 +1,63 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF9TCCBF2gAwIBAgIQRO3YkMMhxvj3S5Mm6reknjANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
NjIwMDAwMDAwWhcNMjQwOTE4MjM1OTU5WjAeMRwwGgYDVQQDExNkZXYuZWFzeXBy
|
||||
b21wdDguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAveVzVmJ1
|
||||
SO7HUmdJno8BYZwwwvwWZmQc0qldMUqkQJIQjCWxI3igzTg/HX3RyFFqvYrTcfV0
|
||||
Je12zFIX+4J9XAYJ7FoWfVzWVYl/Ofz8mtPAS7iyPeDWSkS7WGTBZ49Cjv9R7+LW
|
||||
UCCdq92s1KBz+wZXYGJLdDKZy9YKUA74RDkBTKWAHv6Pne9jlNkXuzsArcoqGfB2
|
||||
ovAzqjWE38Q0ZbEgCP2VIMrxIzLlU1CvVOp8cVoqn72hg+NX/osYTWxm6r1ISZHu
|
||||
WT8n6MMYtUlV2BJu4tRD5jWSDGvrAhRMJmqfoalTj1Q9k0LVhZC1gUXQxt2dCsaW
|
||||
6hMsuZcVp59jGQIDAQABo4ICcjCCAm4wHwYDVR0jBBgwFoAUXzp8ERB+DGdxYdyL
|
||||
o7UAA2f1VxwwHQYDVR0OBBYEFCoS0871zEoi3JotpResnWcN8RYVMA4GA1UdDwEB
|
||||
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
|
||||
BQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIxMCUwIwYIKwYBBQUHAgEWF2h0
|
||||
dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB9BggrBgEFBQcBAQRxMG8w
|
||||
QgYIKwYBBQUHMAKGNmh0dHA6Ly9jcnQudHJ1c3QtcHJvdmlkZXIuY24vVHJ1c3RB
|
||||
c2lhUlNBRFZUTFNDQUcyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL29jc3AudHJ1
|
||||
c3QtcHJvdmlkZXIuY24wggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgB2/4g/Crb7
|
||||
lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6dAAAAZAzRyDFAAAEAwBHMEUCIG5UsHSS
|
||||
d90O5Qjy1eBdV6e+uTLdH15qqo7RAeqVXtMnAiEAnuVgOPBXIqmxEmjLSw40SI/T
|
||||
qKfwqsFOdkk56UNy14wAdQA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF7Phk
|
||||
bgAAAZAzRyCIAAAEAwBGMEQCIFUHRoPkt41l1dn8IVs70/Ev5hprQ8JyuLPVdcq2
|
||||
nrKIAiBlSPeaCLA/3chZBaCThAc3wmCEXps3oToaVUeh2uN4XTAeBgNVHREEFzAV
|
||||
ghNkZXYuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IBgQCOQVmJUNDd
|
||||
gJVNVR+tQ50H8T0h6j6cN4RANzN6I4ns3g2t8MlxCr7faI/NAgHNtd7Pb6Bwm1Vn
|
||||
AdqelLvntxt05Zf0PCNrqTLEocGCCo038lOz6C1NT3U+in4A/NL1nMs733jgSh7N
|
||||
BXy9MqLed+NTijoL2w37hsSuyx781ZaTJuiZ764e/R6g/GTF4JDyM+w+P2EEOJKV
|
||||
UyVZ83dV1ks9QOsbH9R9yFEzW05j09EBIreTgaM8xq16ylfTaA5l4OgMRbEd1OwH
|
||||
NbVPz1bi3iFVHXlGzlwOhmNV/C0FxOul5bclLImRG0urHlY6tpsz1tkrrS0pITQJ
|
||||
8hnlkO31jLSmOuSEiv9HaHwm2DS0uuOt0hgdyHG+gj6SYwtHg3B6MPltdQhmFq35
|
||||
ArYZQA8K2F9vhhv/8q72h9S+/XWz0kcWux4wyZLJWbMQ9CEhJ48qEOyGt4WSZmGE
|
||||
wPP7Yl3kixpENSRYIqCvO9LkzZPtg902TfQSMLG+aibz2BpbisYcYlM=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,63 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF9TCCBF2gAwIBAgIQRO3YkMMhxvj3S5Mm6reknjANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
NjIwMDAwMDAwWhcNMjQwOTE4MjM1OTU5WjAeMRwwGgYDVQQDExNkZXYuZWFzeXBy
|
||||
b21wdDguY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAveVzVmJ1
|
||||
SO7HUmdJno8BYZwwwvwWZmQc0qldMUqkQJIQjCWxI3igzTg/HX3RyFFqvYrTcfV0
|
||||
Je12zFIX+4J9XAYJ7FoWfVzWVYl/Ofz8mtPAS7iyPeDWSkS7WGTBZ49Cjv9R7+LW
|
||||
UCCdq92s1KBz+wZXYGJLdDKZy9YKUA74RDkBTKWAHv6Pne9jlNkXuzsArcoqGfB2
|
||||
ovAzqjWE38Q0ZbEgCP2VIMrxIzLlU1CvVOp8cVoqn72hg+NX/osYTWxm6r1ISZHu
|
||||
WT8n6MMYtUlV2BJu4tRD5jWSDGvrAhRMJmqfoalTj1Q9k0LVhZC1gUXQxt2dCsaW
|
||||
6hMsuZcVp59jGQIDAQABo4ICcjCCAm4wHwYDVR0jBBgwFoAUXzp8ERB+DGdxYdyL
|
||||
o7UAA2f1VxwwHQYDVR0OBBYEFCoS0871zEoi3JotpResnWcN8RYVMA4GA1UdDwEB
|
||||
/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
|
||||
BQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIxMCUwIwYIKwYBBQUHAgEWF2h0
|
||||
dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATB9BggrBgEFBQcBAQRxMG8w
|
||||
QgYIKwYBBQUHMAKGNmh0dHA6Ly9jcnQudHJ1c3QtcHJvdmlkZXIuY24vVHJ1c3RB
|
||||
c2lhUlNBRFZUTFNDQUcyLmNydDApBggrBgEFBQcwAYYdaHR0cDovL29jc3AudHJ1
|
||||
c3QtcHJvdmlkZXIuY24wggEDBgorBgEEAdZ5AgQCBIH0BIHxAO8AdgB2/4g/Crb7
|
||||
lVHCYcz1h7o0tKTNuyncaEIKn+ZnTFo6dAAAAZAzRyDFAAAEAwBHMEUCIG5UsHSS
|
||||
d90O5Qjy1eBdV6e+uTLdH15qqo7RAeqVXtMnAiEAnuVgOPBXIqmxEmjLSw40SI/T
|
||||
qKfwqsFOdkk56UNy14wAdQA/F0tP1yJHWJQdZRyEvg0S7ZA3fx+FauvBvyiF7Phk
|
||||
bgAAAZAzRyCIAAAEAwBGMEQCIFUHRoPkt41l1dn8IVs70/Ev5hprQ8JyuLPVdcq2
|
||||
nrKIAiBlSPeaCLA/3chZBaCThAc3wmCEXps3oToaVUeh2uN4XTAeBgNVHREEFzAV
|
||||
ghNkZXYuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IBgQCOQVmJUNDd
|
||||
gJVNVR+tQ50H8T0h6j6cN4RANzN6I4ns3g2t8MlxCr7faI/NAgHNtd7Pb6Bwm1Vn
|
||||
AdqelLvntxt05Zf0PCNrqTLEocGCCo038lOz6C1NT3U+in4A/NL1nMs733jgSh7N
|
||||
BXy9MqLed+NTijoL2w37hsSuyx781ZaTJuiZ764e/R6g/GTF4JDyM+w+P2EEOJKV
|
||||
UyVZ83dV1ks9QOsbH9R9yFEzW05j09EBIreTgaM8xq16ylfTaA5l4OgMRbEd1OwH
|
||||
NbVPz1bi3iFVHXlGzlwOhmNV/C0FxOul5bclLImRG0urHlY6tpsz1tkrrS0pITQJ
|
||||
8hnlkO31jLSmOuSEiv9HaHwm2DS0uuOt0hgdyHG+gj6SYwtHg3B6MPltdQhmFq35
|
||||
ArYZQA8K2F9vhhv/8q72h9S+/XWz0kcWux4wyZLJWbMQ9CEhJ48qEOyGt4WSZmGE
|
||||
wPP7Yl3kixpENSRYIqCvO9LkzZPtg902TfQSMLG+aibz2BpbisYcYlM=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
98
website/grammar.easyprompt8.com.conf
Normal file
@ -0,0 +1,98 @@
|
||||
##
|
||||
# You should look at the following URL's in order to grasp a solid understanding
|
||||
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
||||
# https://www.nginx.com/resources/wiki/start/
|
||||
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
|
||||
# https://wiki.debian.org/Nginx/DirectoryStructure
|
||||
#
|
||||
# In most cases, administrators will remove this file from sites-enabled/ and
|
||||
# leave it as reference inside of sites-available where it will continue to be
|
||||
# updated by the nginx packaging team.
|
||||
#
|
||||
# This file will automatically load configuration files provided by other
|
||||
# applications, such as Drupal or Wordpress. These applications will be made
|
||||
# available underneath a path with that package name, such as /drupal8.
|
||||
#
|
||||
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
|
||||
##
|
||||
|
||||
|
||||
server {
|
||||
#SSL 默认访问端口号为 443
|
||||
listen 443 ssl;
|
||||
|
||||
#请填写绑定证书的域名
|
||||
server_name grammar.easyprompt8.com;
|
||||
|
||||
#请填写证书文件的相对路径或绝对路径
|
||||
ssl_certificate ./crt/grammar.easyprompt8.com_bundle.crt;
|
||||
|
||||
#请填写私钥文件的相对路径或绝对路径
|
||||
ssl_certificate_key ./crt/grammar.easyprompt8.com.key;
|
||||
ssl_session_timeout 5m;
|
||||
|
||||
#请按照以下协议配置
|
||||
ssl_protocols TLSv1.2 TLSv1.3;
|
||||
|
||||
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
|
||||
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
|
||||
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
error_log /var/log/nginx/aigrammar_error.log;
|
||||
access_log /var/log/nginx/aigrammar_access.log;
|
||||
|
||||
location = / {
|
||||
proxy_pass http://170.106.194.18/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
|
||||
# Location for assets like CSS, JS, images (assuming they are stored under a specific directory)
|
||||
location /wp-content/ {
|
||||
proxy_pass http://170.106.194.18/wp-content/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
# Location for assets like CSS, JS, images (assuming they are stored under a specific directory)
|
||||
location /wp-includes/ {
|
||||
proxy_pass http://170.106.194.18/wp-includes/;
|
||||
proxy_set_header Host $host;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
|
||||
location / {
|
||||
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
|
||||
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
|
||||
root /var/www/html;
|
||||
index index.html index.htm index.nginx-debian.html;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Virtual Host configuration for example.com
|
||||
#
|
||||
# You can move that to a different file under sites-available/ and symlink that
|
||||
# to sites-enabled/ to enable it.
|
||||
#
|
||||
#server {
|
||||
# listen 80;
|
||||
# listen [::]:80;
|
||||
#
|
||||
# server_name example.com;
|
||||
#
|
||||
# root /var/www/example.com;
|
||||
# index index.html;
|
||||
#
|
||||
# location / {
|
||||
# try_files $uri $uri/ =404;
|
||||
# }
|
||||
#}
|
||||
BIN
website/grammar.easyprompt8.com_nginx.zip
Normal file
@ -0,0 +1,19 @@
|
||||
-----BEGIN CERTIFICATE REQUEST-----
|
||||
MIIDDjCCAfYCAQAwgZMxCzAJBgNVBAYTAkNOMRAwDgYDVQQIEwdCZWlqaW5nMRAw
|
||||
DgYDVQQHEwdCZWlqaW5nMQ8wDQYDVQQKEwZxY2xvdWQxDzANBgNVBAsTBnFjbG91
|
||||
ZDEgMB4GA1UEAxMXZ3JhbW1hci5lYXN5cHJvbXB0OC5jb20xHDAaBgNVBAUTEzc4
|
||||
NDEyNzAwMDg3MTI2NjA2ODIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
||||
AQDViE8x0kAAmonRx1LrFwflVDIFkOhLltiO61iwB/uo7NDo8NElkWuID2/+dqEJ
|
||||
HZ0r9TDOHpxKCB2/7ahkzPE0FvZqUGG2YGdoEXd8i9BUTUAhYj3uTka/ycBqZ+TP
|
||||
jRXS+9cSpr94xxh12h3RTr7q06gUEpG27BVGDicWtAVASdigx/CLLUZqKvia3hWI
|
||||
k3uIgUIWcVcuaT/VwiBu1ascpNI8XQYqpsu+riGBPZvc+tbty7i/WQI8tN43O5jD
|
||||
rjIMu5FnzBXtdD35h/u1JPeGm6W2prk/aXBsfYjg3dtuq3l3MESKYmdTuNVloDo/
|
||||
hdt/a+k4iO3CSBvLbZncFaA7AgMBAAGgNTAzBgkqhkiG9w0BCQ4xJjAkMCIGA1Ud
|
||||
EQQbMBmCF2dyYW1tYXIuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBCwUAA4IB
|
||||
AQAq6rKHFnaCgEHLH7Yc05RrwVdgyjRVdy8CPIXfZy8Ma69AhcZygq+NCi37PGj2
|
||||
d77ohgdXWjmyVpg7BuewXs5GOJMsAoBA/81UDWKp3sXfOGTTVkDSTyQN8CbajIP8
|
||||
sNHcuBpvPdoe1vaJYDXprBLTuVNArHOAwV2K1OzBxFEFZ703RtsdGluJE7hNJgCK
|
||||
CCNDAbEctdpPqWqmzfBd86COS2m3KVPY71MbD5h7+nVVkjzwvP05emc+dRgqXg53
|
||||
qcuSZhYOUlSihYStiOH9PqG3rZDKPSbSCSXwueOfrMvTiKR5Z8C/PKtgPEapSSgq
|
||||
aCw1ZRS+bOlKIFil5DX3oWGl
|
||||
-----END CERTIFICATE REQUEST-----
|
||||
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEogIBAAKCAQEA1YhPMdJAAJqJ0cdS6xcH5VQyBZDoS5bYjutYsAf7qOzQ6PDR
|
||||
JZFriA9v/nahCR2dK/Uwzh6cSggdv+2oZMzxNBb2alBhtmBnaBF3fIvQVE1AIWI9
|
||||
7k5Gv8nAamfkz40V0vvXEqa/eMcYddod0U6+6tOoFBKRtuwVRg4nFrQFQEnYoMfw
|
||||
iy1Gair4mt4ViJN7iIFCFnFXLmk/1cIgbtWrHKTSPF0GKqbLvq4hgT2b3PrW7cu4
|
||||
v1kCPLTeNzuYw64yDLuRZ8wV7XQ9+Yf7tST3hpultqa5P2lwbH2I4N3bbqt5dzBE
|
||||
imJnU7jVZaA6P4Xbf2vpOIjtwkgby22Z3BWgOwIDAQABAoIBAA5WCHsf0ow30+jx
|
||||
qO9/rFgJPxKAmBf7GK7/vgSThKHixGPfRytuh/mqj6pV7JngEx1QaOZtx7Bwuw6X
|
||||
tiaOW+NTZ1fb7bOA5XBnO85w1JvUU+np3p6RQs69jN2X/BSzNDPmFJp79370XwAK
|
||||
lNXoo4jAjRhL5tyRHRyG9rjffTrDmxERH4h6HuoZ3x0TIXmFg2OxFMF3UrLeR0cq
|
||||
0ohR4yCn/Sgii1EzHUf6ZKlt2Sguo48UOEyBLyOuQyypDKfIJD7uEu9Ww4qHiFqw
|
||||
6dEy+9Hsbpj1soeNxi81z0u5+yBGyJfJ6x9Z06TX13tCLxv+RoJsPZI9MSmnLKnK
|
||||
2bvwa4ECgYEA5SvcipmCtnH4k8VM1XL6INbQ7agpUuMDyc/KrE2n7PrtcaomWd7v
|
||||
gAX3uXFrtiNUI4sOmSw76zacwEO8NOE79aebYrDMpEjY+9NMJih57e5VwNmQRBul
|
||||
N987ZrlsPrQIBCEpJIYPb2ciXhDFZnB8/qoOMygYsvqcsDj41wucbvcCgYEA7ofC
|
||||
Zz9NCpqYQfyI9OAhcly3SRyW5tfoIP5lqt7TtZsExRokyO+lsmg1NKOwO/Lp+VYv
|
||||
MiaTkZ7qGoXeu1d2MNALmA7esczsFGfKAD+WuxzptCSEkToXNBKchL22Gc4TlRHs
|
||||
4+Y/PsAqscxhNLq072k4eaTB86Hyu5LzKNG+k90CgYAQF6Zi7SiqmxIzfjVI/8vk
|
||||
pnEBXz+XnG1VrIu00bcrAuvNgX8z7F2xBbpBgV9o6M4tuMQLqXmDqNAVCCydIfvN
|
||||
4jkdEwErwBnMhSfhvhHhzUykQCLLRY2ygLBxJDAfrxCpCZMUB33p+roFFPRnnxqH
|
||||
33Ujznr9hm+eSEHhB+WyPQKBgC47BcS5EheCCwyPA4RihFkD+0oiTmUDZ6wtYksR
|
||||
0PqbxvrkrEh9miHP7K/9IcUcuZhnydHwhB1vLXRiid7JftDLIdQg3aycSQ1TaGVP
|
||||
7cjqO6l8gm0bUy/2g3t+wXKS7FyyErXBBHUHDb9UG2r63OKiBB4ffq/XrZIJUzOQ
|
||||
I13JAoGALGaQnXMpDoXe1kWJpjTuNSu6MBHHWq0K/WXvKRzvZMHKbwPMmIQMgubN
|
||||
ncdzx7BIGUMazr46pF8X3KSQC7m73sob/hTGELCsdmnPwmR2DKg8LkkKUtKsQ9Tt
|
||||
kaBKymZmFzjQc03Y7iWv3qYhmhkK4REQJ+oaT5nOI+0WoI/I+7o=
|
||||
-----END RSA PRIVATE KEY-----
|
||||
@ -0,0 +1,64 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF/jCCBGagAwIBAgIQPzDAIg6pSB5ccHLQ+cAURjANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
ODA4MDAwMDAwWhcNMjQxMTA2MjM1OTU5WjAiMSAwHgYDVQQDExdncmFtbWFyLmVh
|
||||
c3lwcm9tcHQ4LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANWI
|
||||
TzHSQACaidHHUusXB+VUMgWQ6EuW2I7rWLAH+6js0Ojw0SWRa4gPb/52oQkdnSv1
|
||||
MM4enEoIHb/tqGTM8TQW9mpQYbZgZ2gRd3yL0FRNQCFiPe5ORr/JwGpn5M+NFdL7
|
||||
1xKmv3jHGHXaHdFOvurTqBQSkbbsFUYOJxa0BUBJ2KDH8IstRmoq+JreFYiTe4iB
|
||||
QhZxVy5pP9XCIG7Vqxyk0jxdBiqmy76uIYE9m9z61u3LuL9ZAjy03jc7mMOuMgy7
|
||||
kWfMFe10PfmH+7Uk94abpbamuT9pcGx9iODd226reXcwRIpiZ1O41WWgOj+F239r
|
||||
6TiI7cJIG8ttmdwVoDsCAwEAAaOCAncwggJzMB8GA1UdIwQYMBaAFF86fBEQfgxn
|
||||
cWHci6O1AANn9VccMB0GA1UdDgQWBBQutQNY7KIW0zBHb2cVPh86z0qzYDAOBgNV
|
||||
HQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
|
||||
KwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICMTAlMCMGCCsGAQUFBwIB
|
||||
FhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwfQYIKwYBBQUHAQEE
|
||||
cTBvMEIGCCsGAQUFBzAChjZodHRwOi8vY3J0LnRydXN0LXByb3ZpZGVyLmNuL1Ry
|
||||
dXN0QXNpYVJTQURWVExTQ0FHMi5jcnQwKQYIKwYBBQUHMAGGHWh0dHA6Ly9vY3Nw
|
||||
LnRydXN0LXByb3ZpZGVyLmNuMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAdv+I
|
||||
Pwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGRMaO99gAABAMARzBFAiEA
|
||||
xvL9IBvnPR0t9VOW5MvsXtZFqnzZoZxdtlY59K4Mt68CIFMDDHYMtAJ0ZW0oQocV
|
||||
APxmpX1XJ7lT/2Lqj52SBwwYAHYAPxdLT9ciR1iUHWUchL4NEu2QN38fhWrrwb8o
|
||||
hez4ZG4AAAGRMaO91gAABAMARzBFAiEAhEgue88k4Jwsh4p01ERma+OXH9IKEtZk
|
||||
qO1BdHQfTl4CIGLv/GemWq32okvweCQOjyWeYa7qEEuVRGvbxU5SkckfMCIGA1Ud
|
||||
EQQbMBmCF2dyYW1tYXIuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IB
|
||||
gQBlNMvz1JbHLnqqdmScktOX9hEYNhQ4rCCVreLJgHECnRIOt1p/64LG7QzdZJov
|
||||
+ptljkp61sFev1NdUep6C2p2MVedaDbxV7X70L3bZLdy3vDI0XU15buSiAgupfHJ
|
||||
ciwY0P9Ep/gGHjUD2fOq7gNY4zziPuKnZ26dGE6rK0E3SltmV9x8h4h0ZOwyZ+59
|
||||
31RAwBkInou82oJCylhGqIuJaJF1iFvI80rhCuNgxjjPpFajQT8h5+CRBHC+/mZj
|
||||
JpPIN+im/kT1A4Ysd+2+CzeoedcQ1MeNsy/71dHHm7hugorT6SiE/wkgGrovoy7x
|
||||
ilwMafkpmcPtsYhnGh8IPmGV9kI8VSvqZGkJfDyLxRvA76phmmBdG4xsfHz1mIZH
|
||||
jMf7NODh+YeGTqzkIZBmSgLnQ9fWFffI5/IfbAdve7cWJrefSlUIHr71X1lH/oxn
|
||||
BufF0IgkwLIXQjX7mWdGgbVyGW0Baw4Jnip64Komi2tgZw+wH3EVoFBcS8OxZOCD
|
||||
Ys8=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
@ -0,0 +1,64 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF/jCCBGagAwIBAgIQPzDAIg6pSB5ccHLQ+cAURjANBgkqhkiG9w0BAQwFADBZ
|
||||
MQswCQYDVQQGEwJDTjElMCMGA1UEChMcVHJ1c3RBc2lhIFRlY2hub2xvZ2llcywg
|
||||
SW5jLjEjMCEGA1UEAxMaVHJ1c3RBc2lhIFJTQSBEViBUTFMgQ0EgRzIwHhcNMjQw
|
||||
ODA4MDAwMDAwWhcNMjQxMTA2MjM1OTU5WjAiMSAwHgYDVQQDExdncmFtbWFyLmVh
|
||||
c3lwcm9tcHQ4LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANWI
|
||||
TzHSQACaidHHUusXB+VUMgWQ6EuW2I7rWLAH+6js0Ojw0SWRa4gPb/52oQkdnSv1
|
||||
MM4enEoIHb/tqGTM8TQW9mpQYbZgZ2gRd3yL0FRNQCFiPe5ORr/JwGpn5M+NFdL7
|
||||
1xKmv3jHGHXaHdFOvurTqBQSkbbsFUYOJxa0BUBJ2KDH8IstRmoq+JreFYiTe4iB
|
||||
QhZxVy5pP9XCIG7Vqxyk0jxdBiqmy76uIYE9m9z61u3LuL9ZAjy03jc7mMOuMgy7
|
||||
kWfMFe10PfmH+7Uk94abpbamuT9pcGx9iODd226reXcwRIpiZ1O41WWgOj+F239r
|
||||
6TiI7cJIG8ttmdwVoDsCAwEAAaOCAncwggJzMB8GA1UdIwQYMBaAFF86fBEQfgxn
|
||||
cWHci6O1AANn9VccMB0GA1UdDgQWBBQutQNY7KIW0zBHb2cVPh86z0qzYDAOBgNV
|
||||
HQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYI
|
||||
KwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICMTAlMCMGCCsGAQUFBwIB
|
||||
FhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwfQYIKwYBBQUHAQEE
|
||||
cTBvMEIGCCsGAQUFBzAChjZodHRwOi8vY3J0LnRydXN0LXByb3ZpZGVyLmNuL1Ry
|
||||
dXN0QXNpYVJTQURWVExTQ0FHMi5jcnQwKQYIKwYBBQUHMAGGHWh0dHA6Ly9vY3Nw
|
||||
LnRydXN0LXByb3ZpZGVyLmNuMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYAdv+I
|
||||
Pwq2+5VRwmHM9Ye6NLSkzbsp3GhCCp/mZ0xaOnQAAAGRMaO99gAABAMARzBFAiEA
|
||||
xvL9IBvnPR0t9VOW5MvsXtZFqnzZoZxdtlY59K4Mt68CIFMDDHYMtAJ0ZW0oQocV
|
||||
APxmpX1XJ7lT/2Lqj52SBwwYAHYAPxdLT9ciR1iUHWUchL4NEu2QN38fhWrrwb8o
|
||||
hez4ZG4AAAGRMaO91gAABAMARzBFAiEAhEgue88k4Jwsh4p01ERma+OXH9IKEtZk
|
||||
qO1BdHQfTl4CIGLv/GemWq32okvweCQOjyWeYa7qEEuVRGvbxU5SkckfMCIGA1Ud
|
||||
EQQbMBmCF2dyYW1tYXIuZWFzeXByb21wdDguY29tMA0GCSqGSIb3DQEBDAUAA4IB
|
||||
gQBlNMvz1JbHLnqqdmScktOX9hEYNhQ4rCCVreLJgHECnRIOt1p/64LG7QzdZJov
|
||||
+ptljkp61sFev1NdUep6C2p2MVedaDbxV7X70L3bZLdy3vDI0XU15buSiAgupfHJ
|
||||
ciwY0P9Ep/gGHjUD2fOq7gNY4zziPuKnZ26dGE6rK0E3SltmV9x8h4h0ZOwyZ+59
|
||||
31RAwBkInou82oJCylhGqIuJaJF1iFvI80rhCuNgxjjPpFajQT8h5+CRBHC+/mZj
|
||||
JpPIN+im/kT1A4Ysd+2+CzeoedcQ1MeNsy/71dHHm7hugorT6SiE/wkgGrovoy7x
|
||||
ilwMafkpmcPtsYhnGh8IPmGV9kI8VSvqZGkJfDyLxRvA76phmmBdG4xsfHz1mIZH
|
||||
jMf7NODh+YeGTqzkIZBmSgLnQ9fWFffI5/IfbAdve7cWJrefSlUIHr71X1lH/oxn
|
||||
BufF0IgkwLIXQjX7mWdGgbVyGW0Baw4Jnip64Komi2tgZw+wH3EVoFBcS8OxZOCD
|
||||
Ys8=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIFBzCCA++gAwIBAgIRALIM7VUuMaC/NDp1KHQ76aswDQYJKoZIhvcNAQELBQAw
|
||||
ezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
|
||||
A1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
||||
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0yMjAxMTAwMDAwMDBaFw0y
|
||||
ODEyMzEyMzU5NTlaMFkxCzAJBgNVBAYTAkNOMSUwIwYDVQQKExxUcnVzdEFzaWEg
|
||||
VGVjaG5vbG9naWVzLCBJbmMuMSMwIQYDVQQDExpUcnVzdEFzaWEgUlNBIERWIFRM
|
||||
UyBDQSBHMjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKjGDe0GSaBs
|
||||
Yl/VhMaTM6GhfR1TAt4mrhN8zfAMwEfLZth+N2ie5ULbW8YvSGzhqkDhGgSBlafm
|
||||
qq05oeESrIJQyz24j7icGeGyIZ/jIChOOvjt4M8EVi3O0Se7E6RAgVYcX+QWVp5c
|
||||
Sy+l7XrrtL/pDDL9Bngnq/DVfjCzm5ZYUb1PpyvYTP7trsV+yYOCNmmwQvB4yVjf
|
||||
IIpHC1OcsPBntMUGeH1Eja4D+qJYhGOxX9kpa+2wTCW06L8T6OhkpJWYn5JYiht5
|
||||
8exjAR7b8Zi3DeG9oZO5o6Qvhl3f8uGU8lK1j9jCUN/18mI/5vZJ76i+hsgdlfZB
|
||||
Rh5lmAQjD80M9TY+oD4MYUqB5XrigPfFAUwXFGehhlwCVw7y6+5kpbq/NpvM5Ba8
|
||||
SeQYUUuMA8RXpTtGlrrTPqJryfa55hTuX/ThhX4gcCVkbyujo0CYr+Uuc14IOyNY
|
||||
1fD0/qORbllbgV41wiy/2ZUWZQUodqHWkjT1CwIMbQOY5jmrSYGBwwIDAQABo4IB
|
||||
JjCCASIwHwYDVR0jBBgwFoAUoBEKIz6W8Qfs4q8p74Klf9AwpLQwHQYDVR0OBBYE
|
||||
FF86fBEQfgxncWHci6O1AANn9VccMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8E
|
||||
CDAGAQH/AgEAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAiBgNVHSAE
|
||||
GzAZMA0GCysGAQQBsjEBAgIxMAgGBmeBDAECATBDBgNVHR8EPDA6MDigNqA0hjJo
|
||||
dHRwOi8vY3JsLmNvbW9kb2NhLmNvbS9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNy
|
||||
bDA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmNvbW9k
|
||||
b2NhLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAHMUom5cxIje2IiFU7mOCsBr2F6CY
|
||||
eU5cyfQ/Aep9kAXYUDuWsaT85721JxeXFYkf4D/cgNd9+hxT8ZeDOJrn+ysqR7NO
|
||||
2K9AdqTdIY2uZPKmvgHOkvH2gQD6jc05eSPOwdY/10IPvmpgUKaGOa/tyygL8Og4
|
||||
3tYyoHipMMnS4OiYKakDJny0XVuchIP7ZMKiP07Q3FIuSS4omzR77kmc75/6Q9dP
|
||||
v4wa90UCOn1j6r7WhMmX3eT3Gsdj3WMe9bYD0AFuqa6MDyjIeXq08mVGraXiw73s
|
||||
Zale8OMckn/BU3O/3aFNLHLfET2H2hT6Wb3nwxjpLIfXmSVcVd8A58XH0g==
|
||||
-----END CERTIFICATE-----
|
||||
BIN
wordpress/Raft.zip
Normal file
8
wordpress/Raft/WPCOM企业主题.url
Normal file
@ -0,0 +1,8 @@
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
||||
[InternetShortcut]
|
||||
URL=http://www.wpcom.cn/
|
||||
IDList=
|
||||
IconFile=http://www.iztwp.com/favicon.ico
|
||||
IconIndex=1
|
||||
HotKey=0
|
||||
BIN
wordpress/Raft/raft.1.0.6.zip
Normal file
8
wordpress/Raft/免费获取更多主题.url
Normal file
@ -0,0 +1,8 @@
|
||||
[{000214A0-0000-0000-C000-000000000046}]
|
||||
Prop3=19,2
|
||||
[InternetShortcut]
|
||||
URL=http://www.iztwp.com/
|
||||
IDList=
|
||||
IconFile=http://www.iztwp.com/favicon.ico
|
||||
IconIndex=1
|
||||
HotKey=0
|
||||
BIN
wordpress/wordpress-theme-puock-2.7.6.zip
Normal file
BIN
wordpress/zhuige_theme_ow_free-master.zip
Normal file
1
wordpress/zhuige_theme_ow_free-master/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
|
||||
339
wordpress/zhuige_theme_ow_free-master/LICENSE
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
66
wordpress/zhuige_theme_ow_free-master/README.md
Normal file
@ -0,0 +1,66 @@
|
||||
### 介绍
|
||||
|
||||
追格企业官网主题(开源版)由追格( [www.zhuige.com](https://www.zhuige.com) )开发的一款开源WordPress主题,专为企业建站和追格企业官网小程序(开源版)PC配套而设计,功能集新闻动态、留言反馈、产品与服务、公司简介、联系我们等模块,遵循GPL V2.0开源协议发布。
|
||||
|
||||

|
||||
|
||||
**主题演示**:https://ow.jiangqie.com/
|
||||
|
||||
**主题下载**:https://gitee.com/zhuige_com/zhuige_theme_ow_free
|
||||
|
||||
|
||||
### 联系交流
|
||||
|
||||
微信:**jianbing2011**(加微信,进微信群交流)
|
||||
|
||||
<img src="https://www.zhuige.com/ad/qrcode.png" alt="扫码加微信/关注公众号" width="600" height="370" />
|
||||
|
||||
|
||||
### 追格(酱茄)开源产品
|
||||
|
||||
1. 追格资讯小程序Free:[https://www.zhuige.com/product/zxfree.html](https://www.zhuige.com/product/zxfree.html)
|
||||
|
||||
2. 酱茄主题Free:[https://www.zhuige.com/product/ztfree.html](https://www.zhuige.com/product/ztfree.html)
|
||||
|
||||
3. 追格企业官网小程序Free:[https://www.zhuige.com/product/gwfree.html](https://www.zhuige.com/product/gwfree.html)
|
||||
|
||||
4. 追格企业官网主题:[https://www.zhuige.com/product/gwztfree.html](https://www.zhuige.com/product/gwztfree.html)
|
||||
|
||||
5. 追格积-分商城小程序:[https://www.zhuige.com/product/jf.html](https://www.zhuige.com/product/jf.html)
|
||||
|
||||
6. 追格商城小程序:[https://www.zhuige.com/product/sc.html](https://www.zhuige.com/product/sc.html)
|
||||
|
||||
|
||||
### 主题预览
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
### 安装教程
|
||||
|
||||
就和其他wordpress主题一样,把zhuige-ow-free上传到 wp-content\themes 主题目录,然后启用就可以了。
|
||||
|
||||
更详细的安装文档:[安装文档](https://www.zhuige.com/docs/gwztfree)
|
||||
|
||||
|
||||
### 免责声明
|
||||
|
||||
用户在接受酱茄服务之前,请务必仔细阅读本声明( www.jiangqie.com/mzsm )并同意本声明。
|
||||
|
||||
|
||||
### 特别声明
|
||||
|
||||
黑灰产请绕行!
|
||||
|
||||
如果发现有人使用本程序从事违法活动,将即可向公安机关举报,并协助破案!
|
||||
|
||||
|
||||
### 特别感谢
|
||||
|
||||
我们借助了开源的力量,才得以快速构建出酱茄Free主题,在此特别感谢他们(排名不分先后):
|
||||
|
||||
WordPress、JQuery、Layer.js、Codestar Framework、Font Awesome
|
||||
|
||||
以及其他未标记的开源及创意…
|
||||
BIN
wordpress/zhuige_theme_ow_free-master/zhuige-ow-free.zip
Normal file
BIN
企业邮箱/邮箱分配范围名单 (2).xlsx
Normal file
BIN
解决XCode报错/Libarclite-Files-main.zip
Normal file
9
解决XCode报错/Libarclite-Files-main/README.md
Normal file
@ -0,0 +1,9 @@
|
||||
# Libarclite-Files
|
||||
|
||||
Xcode 14.3 and 14.3.1 has build issues with some Cocoa pods because of the absence of '.a' files in its XcodeDefaults toolchain contents.
|
||||
Here are all the missing files in Xcode 14.3.
|
||||
|
||||
You can download and paste it into this path:
|
||||
> /Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/
|
||||
|
||||
* Note: Create a folder called 'arc' in lib folder if it doesn't exist.
|
||||