# Tárhely-hitelesítő adatok tárolása fájlban

> Hogyan tárold az Amazon S3 kulcsokat vagy az FTP-adatokat az adatbázis helyett egy mu-plugin fájlban.

Előfordul, hogy a távoli tárhely hitelesítő adatait (például az Amazon S3 kulcsokat vagy az FTP-bejelentkezést) nem az adatbázisban, hanem fájlban szeretnéd tárolni. Ezt egy mu-plugin segítségével oldhatod meg.

## A mu-plugin létrehozása

1. Nézd meg, van-e `mu-plugins` nevű mappa a WordPress `wp-content` mappájában. Ha nincs, hozd létre.
2. Hozz létre benne egy tetszőleges nevű, `.php` végű fájlt, például `wp-content/mu-plugins/define_udp_api_keys.php`.
3. Másold bele az alábbi példák egyikét, és írd át a kulcsokat a sajátjaidra.

Ha átnevezted a WordPress alapértelmezett mappáit (például a `wp-content` mappát), az elérési utakat ennek megfelelően igazítsd.

Ha a fájlban hiba van, az egész oldal elfehéredhet („white screen of death”). Ilyenkor töröld a fájlt, vagy javítsd ki a hibát, és az oldal visszatér.

## Amazon S3 kulcsok fájlban

A kód a `get_s3_user_settings` függvényben tárolt hozzáférési és titkos kulcsot használja. Csak ebben a függvényben kell szerkesztened: a `test_key` és a `test_secret_key` helyére írd a saját kulcsaidat. Ha több S3-példányod van, a tömb következő elemébe írd a második kulcspárt, és további példányoknál vegyél fel újabb elemet ugyanebben a formában. A példa két S3-fiókot kezel.

```php
<?php
add_filter('updraftplus_get_option', 'get_stored_s3_options', 10, 3);
add_filter('updraftplus_update_option', 'update_stored_s3_options', 10, 3);

// Futásidőben beilleszti a kulcsokat, amikor szükség van rájuk.
function get_stored_s3_options($ret, $option, $default) {
  if ('updraft_s3' != $option || empty($ret['settings'])) return $ret;
  $user_settings = get_s3_user_settings();
  foreach ($ret['settings'] as $instance => $options) {
    $settings = array_shift($user_settings);
    $ret['settings'][$instance]['accesskey'] = $settings['accesskey'];
    $ret['settings'][$instance]['secretkey'] = $settings['secretkey'];
  }
  return $ret;
}

// Gondoskodik róla, hogy semmi ne kerüljön az adatbázisba.
function update_stored_s3_options($value, $option, $use_cache) {
  if ('updraft_s3' != $option || empty($value['settings'])) return $value;
  foreach ($value['settings'] as $instance => $options) {
    $value['settings'][$instance]['accesskey'] = '';
    $value['settings'][$instance]['secretkey'] = '';
  }
  return $value;
}

// Ide írd a használni kívánt kulcsokat.
function get_s3_user_settings() {
  return array(
    // az 1. példány beállításai
    0 => array(
      'accesskey' => 'test_key',
      'secretkey' => 'test_secret_key'
    ),
    // a 2. példány beállításai
    1 => array(
      'accesskey' => 'test_key_2',
      'secretkey' => 'test_secret_key_2'
    )
  );
}
```

Ezután az API-kulcsaid a fájlban vannak, az adatbázisban nem.

## FTP-adatok fájlban

Ugyanez FTP-hez. A bejelentkezési nevet és a jelszót a `get_ftp_user_settings` függvényben add meg.

```php
<?php
add_filter('updraftplus_get_option', 'get_stored_ftp_options', 10, 3);
add_filter('updraftplus_update_option', 'update_stored_ftp_options', 10, 3);

function get_stored_ftp_options($ret, $option, $default) {
  if ('updraft_ftp' != $option || empty($ret['settings'])) return $ret;
  $user_settings = get_ftp_user_settings();
  foreach ($ret['settings'] as $instance => $options) {
    $settings = array_shift($user_settings);
    $ret['settings'][$instance]['user'] = $settings['user'];
    $ret['settings'][$instance]['pass'] = $settings['pass'];
  }
  return $ret;
}

// Mentéskor az FTP-adatok nem kerülnek az adatbázisba.
function update_stored_ftp_options($value, $option, $use_cache) {
  if ('updraft_ftp' != $option || empty($value['settings'])) return $value;
  foreach ($value['settings'] as $instance => $options) {
    $value['settings'][$instance]['user'] = '';
    $value['settings'][$instance]['pass'] = '';
  }
  return $value;
}

// Ide írd a hitelesítő adataidat.
function get_ftp_user_settings() {
  return array(
    0 => array(
      'user' => 'test_login',
      'pass' => 'test_password'
    ),
    1 => array(
      'user' => 'test_login_2',
      'pass' => 'test_password_2'
    )
  );
}
```

Más tárhelytípushoz a kódot hasonlóan kell átalakítani. Ha ebben nem vagy biztos, kérj meg egy fejlesztőt, pár perces munka.
