サルベージライブラリの年齢判定と国判定に対応

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
This commit is contained in:
N2614 2014-04-18 08:11:09 +00:00
parent 758c7b6702
commit 04f49ef7be
3 changed files with 38 additions and 5 deletions

View File

@ -23,6 +23,9 @@
#include <nn/act/act_ResultPrivate.h>
#include <nn/actslv/actslv_Api.h>
#include <nn/fs/fs_ApiSysSaveData.h>
#include <nn/cfg/CTR/cfg_ApiSys.h>
#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<u32*>(&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());
}

View File

@ -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;

View File

@ -34,6 +34,7 @@ SOURCES[] =
RegionIdModifier.cpp
PreinstallImporter.cpp
ActCompleter.cpp
AgeChecker.cpp
../common/Util.cpp
../common/DrawSystemState.cpp
../common/FileTransfer.cpp