__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
package URI::irc;  # draft-butcher-irc-url-04

use strict;
use warnings;

our $VERSION = '5.30';

use parent 'URI::_login';

use overload (
   '""'     => sub { $_[0]->as_string  },
   '=='     => sub {  URI::_obj_eq(@_) },
   '!='     => sub { !URI::_obj_eq(@_) },
   fallback => 1,
);

sub default_port { 6667 }

#   ircURL   = ircURI "://" location "/" [ entity ] [ flags ] [ options ]
#   ircURI   = "irc" / "ircs"
#   location = [ authinfo "@" ] hostport
#   authinfo = [ username ] [ ":" password ]
#   username = *( escaped / unreserved )
#   password = *( escaped / unreserved ) [ ";" passtype ]
#   passtype = *( escaped / unreserved )
#   entity   = [ "#" ] *( escaped / unreserved )
#   flags    = ( [ "," enttype ] [ "," hosttype ] )
#           /= ( [ "," hosttype ] [ "," enttype ] )
#   enttype  = "," ( "isuser" / "ischannel" )
#   hosttype = "," ( "isserver" / "isnetwork" )
#   options  = "?" option *( "&" option )
#   option   = optname [ "=" optvalue ]
#   optname  = *( ALPHA / "-" )
#   optvalue = optparam *( "," optparam )
#   optparam = *( escaped / unreserved )

# XXX: Technically, passtype is part of the protocol, but is rarely used and
# not defined in the RFC beyond the URL ABNF.

# Starting the entity with /# is okay per spec, but it needs to be encoded to
# %23 for the URL::_generic::path operations to parse correctly.
sub _init {
    my $class = shift;
    my $self = $class->SUPER::_init(@_);
    $$self =~ s|^((?:[^:/?\#]+:)?(?://[^/?\#]*)?)/\#|$1/%23|s;
    $self;
}

# Return the /# form, since this is most common for channel names.
sub path {
    my $self = shift;
    my ($new) = @_;
    $new =~ s|^/\#|/%23| if (@_ && defined $new);
    my $val = $self->SUPER::path(@_ ? $new : ());
    $val =~ s|^/%23|/\#|;
    $val;
}
sub path_query {
    my $self = shift;
    my ($new) = @_;
    $new =~ s|^/\#|/%23| if (@_ && defined $new);
    my $val = $self->SUPER::path_query(@_ ? $new : ());
    $val =~ s|^/%23|/\#|;
    $val;
}
sub as_string {
    my $self = shift;
    my $val = $self->SUPER::as_string;
    $val =~ s|^((?:[^:/?\#]+:)?(?://[^/?\#]*)?)/%23|$1/\#|s;
    $val;
}

sub entity {
    my $self = shift;

    my $path = $self->path;
    $path =~ s|^/||;
    my ($entity, @flags) = split /,/, $path;

    if (@_) {
        my $new = shift;
        $new = '' unless defined $new;
        $self->path( '/'.join(',', $new, @flags) );
    }

    return unless length $entity;
    $entity;
}

sub flags {
    my $self = shift;

    my $path = $self->path;
    $path =~ s|^/||;
    my ($entity, @flags) = split /,/, $path;

    if (@_) {
        $self->path( '/'.join(',', $entity, @_) );
    }

    @flags;
}

sub options { shift->query_form(@_) }

sub canonical {
    my $self = shift;
    my $other = $self->SUPER::canonical;

    # Clean up the flags
    my $path = $other->path;
    $path =~ s|^/||;
    my ($entity, @flags) = split /,/, $path;

    my @clean =
        map { $_ eq 'isnick' ? 'isuser' : $_ }  # convert isnick->isuser
        map { lc }
        # NOTE: Allow flags from draft-mirashi-url-irc-01 as well
        grep { /^(?:is(?:user|channel|server|network|nick)|need(?:pass|key))$/i }
        @flags
    ;

    # Only allow the first type of each category, per the Butcher draft
    my ($enttype)  = grep { /^is(?:user|channel)$/   } @clean;
    my ($hosttype) = grep { /^is(?:server|network)$/ } @clean;
    my @others     = grep { /^need(?:pass|key)$/ }     @clean;

    my @new = (
        $enttype  ? $enttype  : (),
        $hosttype ? $hosttype : (),
        @others,
    );

    unless (join(',', @new) eq join(',', @flags)) {
        $other = $other->clone if $other == $self;
        $other->path( '/'.join(',', $entity, @new) );
    }

    $other;
}

1;

Filemanager

Name Type Size Permission Actions
file Folder 0755
urn Folder 0755
Escape.pm File 7.73 KB 0644
Heuristic.pm File 6.37 KB 0644
IRI.pm File 794 B 0644
QueryParam.pm File 655 B 0644
Split.pm File 2.3 KB 0644
URL.pm File 5.36 KB 0644
WithBase.pm File 3.77 KB 0644
_foreign.pm File 107 B 0644
_generic.pm File 6.66 KB 0644
_idna.pm File 2.03 KB 0644
_ldap.pm File 3.17 KB 0644
_login.pm File 231 B 0644
_punycode.pm File 5.5 KB 0644
_query.pm File 4.74 KB 0644
_segment.pm File 416 B 0644
_server.pm File 3.79 KB 0644
_userpass.pm File 1.01 KB 0644
data.pm File 3.31 KB 0644
file.pm File 9.46 KB 0644
ftp.pm File 1.06 KB 0644
ftpes.pm File 150 B 0644
ftps.pm File 175 B 0644
geo.pm File 10.5 KB 0644
gopher.pm File 2.37 KB 0644
http.pm File 425 B 0644
https.pm File 144 B 0644
icap.pm File 1.46 KB 0644
icaps.pm File 1.41 KB 0644
irc.pm File 3.64 KB 0644
ircs.pm File 142 B 0644
ldap.pm File 2.86 KB 0644
ldapi.pm File 440 B 0644
ldaps.pm File 144 B 0644
mailto.pm File 1.62 KB 0644
mms.pm File 125 B 0644
news.pm File 1.42 KB 0644
nntp.pm File 127 B 0644
nntps.pm File 144 B 0644
otpauth.pm File 8.31 KB 0644
pop.pm File 1.18 KB 0644
rlogin.pm File 129 B 0644
rsync.pm File 207 B 0644
rtsp.pm File 125 B 0644
rtspu.pm File 126 B 0644
scp.pm File 97 B 0644
sftp.pm File 98 B 0644
sip.pm File 1.63 KB 0644
sips.pm File 143 B 0644
snews.pm File 172 B 0644
ssh.pm File 175 B 0644
telnet.pm File 128 B 0644
tn3270.pm File 128 B 0644
urn.pm File 2.03 KB 0644
Filemanager