# Module `src.onionrcommands.sitecreator`

Onionr - Private P2P Communication.

Command to create Onionr mutli-page sites

Expand source code

    """Onionr - Private P2P Communication.

    Command to create Onionr mutli-page sites
    """
    import sys
    import getpass

    from httpapi import onionrsitesapi
    import logger
    from etc import onionrvalues
    """
        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 3 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, see <https://www.gnu.org/licenses/>.
    """

    def create_multipage_site():
        """Command to create mutlipage sites with specified dir and password."""
        error_encountered = False
        try:
            directory = sys.argv[2]
        except IndexError:
            directory = '.'
        try:
            passphrase = sys.argv[3]
        except IndexError:
            logger.warn('''It is critical that this passphrase is long.
    If you want to update your site later you must remember the passphrase.''',
                        terminal=True)

            passphrase = getpass.getpass(
                'Please enter a site passphrase of at least ' +
                str(onionrvalues.PASSWORD_LENGTH) + ' characters.')

            confirm = getpass.getpass('Confirm passphrase:')
            if passphrase != confirm:
                logger.error('Passphrases do not match', terminal=True)
                error_encountered = True

        if len(passphrase) < onionrvalues.PASSWORD_LENGTH:
            error_encountered = True
            logger.error(
                f'Passphrase must be at least {onionrvalues.PASSWORD_LENGTH}' +
                'characters.', terminal=True)

        if error_encountered:
            sys.exit(1)

        results = onionrsitesapi.sitefiles.create_site(
            passphrase, directory=directory)
        results = (results[0].replace('=', ''), results[1])
        logger.info(f'Site address {results[0]}', terminal=True)
        logger.info(f'Block for this version {results[1]}', terminal=True)

    create_multipage_site.onionr_help = "[directory path "  # type: ignore
    create_multipage_site.onionr_help += "(default relative)] "  # type: ignore
    create_multipage_site.onionr_help += "- packages a whole "  # type: ignore
    create_multipage_site.onionr_help += "directory and makes "  # type: ignore
    create_multipage_site.onionr_help += "it available as "  # type: ignore
    create_multipage_site.onionr_help += "an Onionr site."  # type: ignore

## Functions

`def create_multipage_site()`

  Command to create mutlipage sites with specified dir and password.

  Expand source code

      def create_multipage_site():
          """Command to create mutlipage sites with specified dir and password."""
          error_encountered = False
          try:
              directory = sys.argv[2]
          except IndexError:
              directory = '.'
          try:
              passphrase = sys.argv[3]
          except IndexError:
              logger.warn('''It is critical that this passphrase is long.
      If you want to update your site later you must remember the passphrase.''',
                          terminal=True)

              passphrase = getpass.getpass(
                  'Please enter a site passphrase of at least ' +
                  str(onionrvalues.PASSWORD_LENGTH) + ' characters.')

              confirm = getpass.getpass('Confirm passphrase:')
              if passphrase != confirm:
                  logger.error('Passphrases do not match', terminal=True)
                  error_encountered = True

          if len(passphrase) < onionrvalues.PASSWORD_LENGTH:
              error_encountered = True
              logger.error(
                  f'Passphrase must be at least {onionrvalues.PASSWORD_LENGTH}' +
                  'characters.', terminal=True)

          if error_encountered:
              sys.exit(1)

          results = onionrsitesapi.sitefiles.create_site(
              passphrase, directory=directory)
          results = (results[0].replace('=', ''), results[1])
          logger.info(f'Site address {results[0]}', terminal=True)
          logger.info(f'Block for this version {results[1]}', terminal=True)