From 04f49ef7be5448031c218b7705fa00ce0f1d944a Mon Sep 17 00:00:00 2001 From: N2614 Date: Fri, 18 Apr 2014 08:11:09 +0000 Subject: [PATCH] =?UTF-8?q?=E3=82=B5=E3=83=AB=E3=83=99=E3=83=BC=E3=82=B8?= =?UTF-8?q?=E3=83=A9=E3=82=A4=E3=83=96=E3=83=A9=E3=83=AA=E3=81=AE=E5=B9=B4?= =?UTF-8?q?=E9=BD=A2=E5=88=A4=E5=AE=9A=E3=81=A8=E5=9B=BD=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E3=81=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@789 385bec56-5757-e545-9c3a-d8741f4650f1 --- .../sources/ConsoleRestore/ActCompleter.cpp | 41 +++++++++++++++++-- .../sources/ConsoleRestore/AgeChecker.cpp | 1 - .../sources/ConsoleRestore/OMakefile | 1 + 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp index a554794..3a96ed5 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ActCompleter.cpp @@ -23,6 +23,9 @@ #include #include #include +#include + +#include "AgeChecker.h" namespace ConsoleRestore { @@ -142,12 +145,42 @@ nn::Result ActCompleter::ExecImpl() // サルベージ終了をシステムに通知 s_EndEvent.Signal(); - if(nn::cfg::GetRegion() == nn::cfg::CFG_REGION_AMERICA) + // COPPA判定とPIN判定の準備 + nn::cfg::CfgRegionCode region = nn::cfg::GetRegion(); + u8 age = nn::act::GetAgeAtSalvage(); + nn::cfg::CfgCountryCode country; + + NN_UTIL_RETURN_IF_FAILED_2( + nn::act::GetCountryCodeAtSalvage(reinterpret_cast(&country)), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + + AgeChecker ageChecker; + + if(region == nn::cfg::CFG_REGION_AMERICA) + { + + if(ageChecker.IsCoppaRequired(age, region, country)) + { + // COPPA対象の年齢なら復元する + s_ApprovalId = nn::act::GetSalvagedApprovalId(); + NN_UTIL_RETURN_IF_FAILED_2( + SaveApprovalId(), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + } + } + + // PIN必須ならフラグを立てる + if(ageChecker.IsPinRestrictionRequired(age, region, country)) { - // COPPA対象の年齢なら復元する - s_ApprovalId = nn::act::GetSalvagedApprovalId(); NN_UTIL_RETURN_IF_FAILED_2( - SaveApprovalId(), + nn::cfg::CTR::system::SetForceParentalControlFlag(true), + nn::act::FinalizeAdmin(), + common::FinalizeNetwork()); + + NN_UTIL_RETURN_IF_FAILED_2( + nn::cfg::CTR::system::FlushConfig(), nn::act::FinalizeAdmin(), common::FinalizeNetwork()); } diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/AgeChecker.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/AgeChecker.cpp index f06224a..1abfa1b 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/AgeChecker.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/AgeChecker.cpp @@ -47,7 +47,6 @@ bool AgeChecker::IsPinRestrictionRequired(u32 age, CfgRegionCode region, CfgCoun { return age < PIN_REQUIRED_AGE_IN_AUSTRALIA_AND_NEW_ZEALAND; } - break; default: { return age < PIN_REQUIRED_AGE_IN_EUROPE; diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/OMakefile b/trunk/ConsoleDataMigration/sources/ConsoleRestore/OMakefile index 6a9c439..c89eb36 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/OMakefile +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/OMakefile @@ -34,6 +34,7 @@ SOURCES[] = RegionIdModifier.cpp PreinstallImporter.cpp ActCompleter.cpp + AgeChecker.cpp ../common/Util.cpp ../common/DrawSystemState.cpp ../common/FileTransfer.cpp