Skip to content

Network tools Library for PHP with native Yggdrasil / IPv6 support

License

Notifications You must be signed in to change notification settings

YGGverse/net-php

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

net-php

Network Library for PHP with native Yggdrasil support

Install

composer require yggverse/net

Usage

Socket

Check socket is open

var_dump(
    \Yggverse\Net\Socket::isOpen('yo.index', 80)
);

Check host valid

var_dump(
    \Yggverse\Net\Socket::isHost('yo.index')
);

Check port valid

var_dump(
    \Yggverse\Net\Socket::isPort(80)
);

Dig

Resolve records

var_dump(
    \Yggverse\Net\Dig::records('yo.index', ['A', 'AAAA'], &$result = [], &$error = [], $provider = null, $timeout = 5)
);

Check hostname valid

var_dump(
    \Yggverse\Net\Dig::isHostName('yo.index')
);

Check record valid

var_dump(
    \Yggverse\Net\Dig::isRecord('A')
);

Check record value valid

var_dump(
    \Yggverse\Net\Dig::isRecordValue('A', '127.0.0.1')
);

Resolve

Init resolver

$resolve = new \Yggverse\Net\Resolve(
    [
        'A',
        'AAAA'
    ],
    [
        '1.1.1.1',
        '8.8.8.8'
    ],
    // ..
);

Get resolved URL string

$resolved = $resolve->url(
    'https://en.wikipedia.org/wiki/Domain_Name_System'
    // next arguments contain debug variables and new address object
);

if ($resolved)
{
    var_dump(
        $resolved // https://185.15.59.224/wiki/Domain_Name_System
    );
}

Resolve Address object

$resolved = $resolve->address(
    new \Yggverse\Net\Address(
        'https://en.wikipedia.org/wiki/Domain_Name_System'
    )
);

if ($resolved)
{
    var_dump(
        $resolved->get() // https://185.15.59.224/wiki/Domain_Name_System
    );

    var_dump(
        $resolved->getHost() // 185.15.59.224
    );
}

Address

Includes methods to work with network addresses.

Base address methods

Different operations with address parts:

  • scheme
  • user
  • password
  • host
  • protocol
  • path
  • query
  • fragment

Address conversion from relative to absolute format

Document root

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1'
);

$address = new \Yggverse\Net\Address(
    '/a2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a2
);

Current folder

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1'
);

$address = new \Yggverse\Net\Address(
    'c2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a1/b1/c2
);

Ending slash

$base = new \Yggverse\Net\Address(
    'http://yo.ygg/a1/b1/c1/'
);

$address = new \Yggverse\Net\Address(
    '../../b2/c2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://yo.ygg/a1/b2/c2
);

All options

$base = new \Yggverse\Net\Address(
    'http://user:password@yo.ygg/a1/b1/c1?attribute=value#anchor'
);

$address = new \Yggverse\Net\Address(
    '../../a2/b2?attribute2=value2#anchor2'
);

var_dump(
    $address->getAbsolute(
        $base
    ) // return http://user:password@yo.ygg/a2/b2?attribute2=value2#anchor2
);

Valid

Network entities validation

Supported methods

  • Valid::ip
  • Valid::ip4
  • Valid::ip6
  • Valid::domainHostName

Integrations

  • gemini-dl - CLI batch downloader for Gemini protocol
  • web-api - Network API with native Yggdrasil/IPv6 support
  • Yo! - Crawler and search engine for different networks
  • Yoda - Experimental PHP-GTK browser for Gemini protocol