亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? common.pm

?? bugzilla
?? PM
字號:
# -*- Mode: perl; indent-tabs-mode: nil -*-## The contents of this file are subject to the Mozilla Public# License Version 1.1 (the "License"); you may not use this file# except in compliance with the License. You may obtain a copy of# the License at http://www.mozilla.org/MPL/## Software distributed under the License is distributed on an "AS# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or# implied. See the License for the specific language governing# rights and limitations under the License.## The Original Code is the Bugzilla Bug Tracking System.## The Initial Developer of the Original Code is Netscape Communications# Corporation. Portions created by Netscape are# Copyright (C) 1998 Netscape Communications Corporation. All# Rights Reserved.## Contributor(s): Terry Weissman <terry@mozilla.org>#                 Dawn Endico <endico@mozilla.org>#                 Dan Mosedale <dmose@mozilla.org>#                 Joe Robins <jmrobins@tgix.com>#                 Jacob Steenhagen <jake@bugzilla.org>#                 J. Paul Reed <preed@sigkill.com>#                 Bradley Baetz <bbaetz@student.usyd.edu.au>#                 Joseph Heenan <joseph@heenan.me.uk>#                 Erik Stambaugh <erik@dasbistro.com>#                 Fr茅d茅ric Buclin <LpSolit@gmail.com>#package Bugzilla::Config::Common;use strict;use Socket;use Time::Zone;use Bugzilla::Util;use Bugzilla::Constants;use Bugzilla::Field;use Bugzilla::Group;use base qw(Exporter);@Bugzilla::Config::Common::EXPORT =    qw(check_multi check_numeric check_regexp check_url check_group       check_sslbase check_priority check_severity check_platform       check_opsys check_shadowdb check_urlbase check_webdotbase       check_netmask check_user_verify_class check_image_converter       check_languages check_mail_delivery_method check_notification       check_timezone check_utf8);# Checking functions for the various valuessub check_multi {    my ($value, $param) = (@_);    if ($param->{'type'} eq "s") {        unless (scalar(grep {$_ eq $value} (@{$param->{'choices'}}))) {            return "Invalid choice '$value' for single-select list param '$param->{'name'}'";        }        return "";    }    elsif ($param->{'type'} eq "m") {        foreach my $chkParam (@$value) {            unless (scalar(grep {$_ eq $chkParam} (@{$param->{'choices'}}))) {                return "Invalid choice '$chkParam' for multi-select list param '$param->{'name'}'";            }        }        return "";    }    else {        return "Invalid param type '$param->{'type'}' for check_multi(); " .          "contact your Bugzilla administrator";    }}sub check_numeric {    my ($value) = (@_);    if ($value !~ /^[0-9]+$/) {        return "must be a numeric value";    }    return "";}sub check_regexp {    my ($value) = (@_);    eval { qr/$value/ };    return $@;}sub check_sslbase {    my $url = shift;    if ($url ne '') {        if ($url !~ m#^https://([^/]+).*/$#) {            return "must be a legal URL, that starts with https and ends with a slash.";        }        my $host = $1;        if ($host =~ /:\d+$/) {            return "must not contain a port.";        }        local *SOCK;        my $proto = getprotobyname('tcp');        socket(SOCK, PF_INET, SOCK_STREAM, $proto);        my $sin = sockaddr_in(443, inet_aton($host));        if (!connect(SOCK, $sin)) {            return "Failed to connect to " . html_quote($host) .                    ":443, unable to enable SSL.";        }    }    return "";}sub check_utf8 {    my $utf8 = shift;    # You cannot turn off the UTF-8 parameter if you've already converted    # your tables to utf-8.    my $dbh = Bugzilla->dbh;    if ($dbh->isa('Bugzilla::DB::Mysql') && $dbh->bz_db_is_utf8 && !$utf8) {        return "You cannot disable UTF-8 support, because your MySQL database"               . " is encoded in UTF-8";    }    return "";}sub check_priority {    my ($value) = (@_);    my $legal_priorities = get_legal_field_values('priority');    if (lsearch($legal_priorities, $value) < 0) {        return "Must be a legal priority value: one of " .            join(", ", @$legal_priorities);    }    return "";}sub check_severity {    my ($value) = (@_);    my $legal_severities = get_legal_field_values('bug_severity');    if (lsearch($legal_severities, $value) < 0) {        return "Must be a legal severity value: one of " .            join(", ", @$legal_severities);    }    return "";}sub check_platform {    my ($value) = (@_);    my $legal_platforms = get_legal_field_values('rep_platform');    if (lsearch(['', @$legal_platforms], $value) < 0) {        return "Must be empty or a legal platform value: one of " .            join(", ", @$legal_platforms);    }    return "";}sub check_opsys {    my ($value) = (@_);    my $legal_OS = get_legal_field_values('op_sys');    if (lsearch(['', @$legal_OS], $value) < 0) {        return "Must be empty or a legal operating system value: one of " .            join(", ", @$legal_OS);    }    return "";}sub check_group {    my $group_name = shift;    return "" unless $group_name;    my $group = new Bugzilla::Group({'name' => $group_name});    unless (defined $group) {        return "Must be an existing group name";    }    return "";}sub check_shadowdb {    my ($value) = (@_);    $value = trim($value);    if ($value eq "") {        return "";    }    if (!Bugzilla->params->{'shadowdbhost'}) {        return "You need to specify a host when using a shadow database";    }    # Can't test existence of this because ConnectToDatabase uses the param,    # but we can't set this before testing....    # This can really only be fixed after we can use the DBI more openly    return "";}sub check_urlbase {    my ($url) = (@_);    if ($url && $url !~ m:^http.*/$:) {        return "must be a legal URL, that starts with http and ends with a slash.";    }    return "";}sub check_url {    my ($url) = (@_);    return '' if $url eq ''; # Allow empty URLs    if ($url !~ m:/$:) {        return 'must be a legal URL, absolute or relative, ending with a slash.';    }    return '';}sub check_webdotbase {    my ($value) = (@_);    $value = trim($value);    if ($value eq "") {        return "";    }    if($value !~ /^https?:/) {        if(! -x $value) {            return "The file path \"$value\" is not a valid executable.  Please specify the complete file path to 'dot' if you intend to generate graphs locally.";        }        # Check .htaccess allows access to generated images        my $webdotdir = bz_locations()->{'webdotdir'};        if(-e "$webdotdir/.htaccess") {            open HTACCESS, "$webdotdir/.htaccess";            if(! grep(/ \\\.png\$/,<HTACCESS>)) {                return "Dependency graph images are not accessible.\nAssuming that you have not modified the file, delete $webdotdir/.htaccess and re-run checksetup.pl to rectify.\n";            }            close HTACCESS;        }    }    return "";}sub check_netmask {    my ($mask) = @_;    my $res = check_numeric($mask);    return $res if $res;    if ($mask < 0 || $mask > 32) {        return "an IPv4 netmask must be between 0 and 32 bits";    }    # Note that if we changed the netmask from anything apart from 32, then    # existing logincookies which aren't for a single IP won't work    # any more. We can't know which ones they are, though, so they'll just    # take space until they're periodically cleared, later.    return "";}sub check_user_verify_class {    # doeditparams traverses the list of params, and for each one it checks,    # then updates. This means that if one param checker wants to look at     # other params, it must be below that other one. So you can't have two     # params mutually dependent on each other.    # This means that if someone clears the LDAP config params after setting    # the login method as LDAP, we won't notice, but all logins will fail.    # So don't do that.    my ($list, $entry) = @_;    for my $class (split /,\s*/, $list) {        my $res = check_multi($class, $entry);        return $res if $res;        if ($class eq 'DB') {            # No params        } elsif ($class eq 'LDAP') {            eval "require Net::LDAP";            return "Error requiring Net::LDAP: '$@'" if $@;            return "LDAP servername is missing" unless Bugzilla->params->{"LDAPserver"};            return "LDAPBaseDN is empty" unless Bugzilla->params->{"LDAPBaseDN"};        } else {                return "Unknown user_verify_class '$class' in check_user_verify_class";        }    }    return "";}sub check_image_converter {    my ($value, $hash) = @_;    if ($value == 1){       eval "require Image::Magick";       return "Error requiring Image::Magick: '$@'" if $@;    }     return "";}sub check_languages {    my ($lang, $param) = @_;    my @languages = split(/[,\s]+/, trim($lang));    if(!scalar(@languages)) {       return "You need to specify a language tag."    }    if (scalar(@languages) > 1 && $param && $param->{'name'} eq 'defaultlanguage') {        return "You can only specify one language tag";    }    my $templatedir = bz_locations()->{'templatedir'};    my %lang_seen;    my @validated_languages;    foreach my $language (@languages) {       if(   ! -d "$templatedir/$language/custom"           && ! -d "$templatedir/$language/default") {          return "The template directory for $language does not exist";       }       push(@validated_languages, $language) unless $lang_seen{$language}++;    }    # Rebuild the list of language tags, avoiding duplicates.    $_[0] = join(', ', @validated_languages);    return "";}sub check_mail_delivery_method {    my $check = check_multi(@_);    return $check if $check;    my $mailer = shift;    if ($mailer eq 'sendmail' && $^O =~ /MSWin32/i) {        # look for sendmail.exe         return "Failed to locate " . SENDMAIL_EXE            unless -e SENDMAIL_EXE;    }    return "";}sub check_notification {    my $option = shift;    my @current_version =        (BUGZILLA_VERSION =~ m/^(\d+)\.(\d+)(?:(rc|\.)(\d+))?\+?$/);    if ($current_version[1] % 2 && $option eq 'stable_branch_release') {        return "You are currently running a development snapshot, and so your " .               "installation is not based on a branch. If you want to be notified " .               "about the next stable release, you should select " .               "'latest_stable_release' instead";    }    return "";}sub check_timezone {    my $tz = shift;    unless (defined(tz_offset($tz))) {        return "must be empty or a legal timezone name, such as PDT or JST";    }    return "";}# OK, here are the parameter definitions themselves.## Each definition is a hash with keys:## name    - name of the param# desc    - description of the param (for editparams.cgi)# type    - see below# choices - (optional) see below# default - default value for the param# checker - (optional) checking function for validating parameter entry#           It is called with the value of the param as the first arg and a#           reference to the param's hash as the second argument## The type value can be one of the following:## t -- A short text entry field (suitable for a single line)# l -- A long text field (suitable for many lines)# b -- A boolean value (either 1 or 0)# m -- A list of values, with many selectable (shows up as a select box)#      To specify the list of values, make the 'choices' key be an array#      reference of the valid choices. The 'default' key should be an array#      reference for the list of selected values (which must appear in the#      first anonymous array), i.e.:#       {#         name => 'multiselect',#         desc => 'A list of options, choose many',#         type => 'm',#         choices => [ 'a', 'b', 'c', 'd' ],#         default => [ 'a', 'd' ],#         checker => \&check_multi#       }##      Here, 'a' and 'd' are the default options, and the user may pick any#      combination of a, b, c, and d as valid options.##      &check_multi should always be used as the param verification function#      for list (single and multiple) parameter types.## s -- A list of values, with one selectable (shows up as a select box)#      To specify the list of values, make the 'choices' key be an array#      reference of the valid choices. The 'default' key should be one of#      those values, i.e.:#       {#         name => 'singleselect',#         desc => 'A list of options, choose one',#         type => 's',#         choices => [ 'a', 'b', 'c' ],#         default => 'b',#         checker => \&check_multi#       }##      Here, 'b' is the default option, and 'a' and 'c' are other possible#      options, but only one at a time! ##      &check_multi should always be used as the param verification function#      for list (single and multiple) parameter types.sub get_param_list {    return;}1;__END__=head1 NAMEBugzilla::Config::Common - Parameter checking functions=head1 DESCRIPTIONAll parameter checking functions are called with two parameters:=head2 Functions=over=item C<check_multi>Checks that a multi-valued parameter (ie type C<s> or type C<m>) satisfiesits contraints.=item C<check_numeric>Checks that the value is a valid number=item C<check_regexp>Checks that the value is a valid regexp=back

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美videossexotv100| 亚洲美女在线国产| 91精品国产综合久久香蕉的特点 | 亚洲一本大道在线| 国产福利精品一区二区| 精品久久久久一区| 日韩精品免费专区| 欧美高清性hdvideosex| 亚洲成人1区2区| 欧美美女一区二区三区| 五月婷婷欧美视频| 欧美亚洲国产一区二区三区| 亚洲精品成人a在线观看| 99久久精品国产观看| 国产精品福利电影一区二区三区四区 | 欧美最猛黑人xxxxx猛交| 亚洲精品一二三区| 欧美色网一区二区| 久久99国产精品免费| 精品日韩欧美在线| 国产白丝网站精品污在线入口| 国产精品色一区二区三区| 91欧美激情一区二区三区成人| 亚洲久草在线视频| 日韩欧美国产麻豆| 蜜臀av一区二区在线观看| 国产欧美一区二区在线观看| 白白色 亚洲乱淫| 日本三级亚洲精品| 国产欧美日韩另类视频免费观看| 欧美日韩极品在线观看一区| 免费一级片91| 亚洲男同性视频| 日韩欧美国产成人一区二区| 91性感美女视频| 成人av免费在线观看| 高清不卡在线观看| 久久久久久久久久久电影| 欧美性猛片xxxx免费看久爱| 国产成人综合亚洲91猫咪| 日韩二区在线观看| 成人免费小视频| 中文字幕欧美三区| 日韩一区二区三免费高清| 在线视频综合导航| eeuss鲁一区二区三区| 国产精品一区二区在线观看不卡| 亚洲午夜久久久久中文字幕久| 国产色产综合色产在线视频| 精品久久国产老人久久综合| 欧美女孩性生活视频| 一本色道a无线码一区v| av亚洲精华国产精华精华| 国产一区福利在线| 激情综合色丁香一区二区| 免费高清在线一区| 美日韩一区二区| 激情五月播播久久久精品| 国产在线精品不卡| 国产资源精品在线观看| 国产精品99久久久| 成人综合婷婷国产精品久久蜜臀| 国产精品亚洲成人| 99国产精品久久久| 欧美亚洲国产bt| 91精品国产色综合久久不卡电影 | 成人性视频网站| 国产99久久久国产精品免费看| 91一区二区三区在线播放| 成人精品视频一区二区三区| 在线亚洲+欧美+日本专区| 欧美一区二区福利视频| 欧美大片顶级少妇| 国产精品天美传媒沈樵| 亚洲精品成a人| 另类小说图片综合网| 91在线观看免费视频| 欧美日韩高清在线播放| 精品美女在线观看| 亚洲精品日韩一| 国产一区二区看久久| 99国产精品视频免费观看| 欧美日本在线观看| 国产欧美日韩在线看| 日本不卡在线视频| 色噜噜狠狠成人中文综合 | 欧美日韩在线播放一区| 久久亚洲精品小早川怜子| 亚洲国产精品久久人人爱| 大白屁股一区二区视频| 欧美不卡123| 偷拍自拍另类欧美| 在线影院国内精品| 国产精品久久综合| 九九视频精品免费| 欧美精品丝袜久久久中文字幕| 亚洲色图欧美偷拍| 国产成人日日夜夜| 亚洲精品在线免费播放| 日韩综合一区二区| 欧美变态tickling挠脚心| 91网站最新地址| 国产亚洲女人久久久久毛片| 奇米精品一区二区三区在线观看| 在线播放91灌醉迷j高跟美女 | 一区二区三区丝袜| 日本高清不卡在线观看| 另类小说综合欧美亚洲| 91麻豆精品久久久久蜜臀| 蜜臀久久久99精品久久久久久| 日韩三级在线观看| 国产1区2区3区精品美女| 日本一区二区三区久久久久久久久不 | 美女视频黄 久久| 久久精品免费在线观看| 色综合天天性综合| 午夜精品福利一区二区蜜股av| 精品久久人人做人人爽| 成人av午夜影院| 午夜影视日本亚洲欧洲精品| 精品国精品国产| 欧美一a一片一级一片| 免费在线观看日韩欧美| 中文字幕亚洲综合久久菠萝蜜| 欧美午夜寂寞影院| 国产精品乡下勾搭老头1| 亚洲国产综合视频在线观看| 久久久www成人免费毛片麻豆| 在线视频一区二区三区| 粉嫩蜜臀av国产精品网站| 亚洲国产成人av网| 国产精品国产三级国产专播品爱网| 欧美日韩国产影片| 国产·精品毛片| 91在线精品一区二区三区| 麻豆精品蜜桃视频网站| 亚洲综合在线五月| 亚洲天堂免费在线观看视频| 欧美精品一区二| 日韩一区和二区| 欧美中文字幕亚洲一区二区va在线 | 欧美视频精品在线| 日本韩国一区二区| proumb性欧美在线观看| 国产精品18久久久久久久久| 美女视频黄 久久| 激情综合亚洲精品| 久久精品噜噜噜成人av农村| 日韩不卡一区二区| 日本欧洲一区二区| 韩国v欧美v日本v亚洲v| 欧美aⅴ一区二区三区视频| 午夜精品久久久久久不卡8050| 一区二区三区高清在线| 亚洲国产精品影院| 蜜桃在线一区二区三区| 国产一区二区h| 99re成人在线| 欧美日韩一区不卡| 91精品国产日韩91久久久久久| 91精品欧美福利在线观看| 欧美一区二区三区在线看| 久久久久久电影| 亚洲精品日韩一| 男人的天堂亚洲一区| 成熟亚洲日本毛茸茸凸凹| 色噜噜狠狠色综合中国| 日韩丝袜美女视频| 欧美激情一区二区在线| 一区二区三区四区五区视频在线观看| 婷婷综合久久一区二区三区| 国产成人一级电影| 色美美综合视频| 精品久久一区二区三区| 综合av第一页| 国产尤物一区二区在线| 欧美亚洲国产bt| 1024成人网| 国产精品66部| 日韩欧美在线1卡| 婷婷激情综合网| 色婷婷久久99综合精品jk白丝 | 日韩精品一区二区三区四区视频| 亚洲欧美偷拍另类a∨色屁股| 国产一区视频在线看| 日韩精品资源二区在线| 三级成人在线视频| 欧美在线你懂得| 一区二区三区精密机械公司| 国产精品一区2区| 久久女同互慰一区二区三区| 日韩经典中文字幕一区| 欧美三级中文字幕在线观看| 亚洲精选视频在线| 91色视频在线| 亚洲午夜免费福利视频| 欧美视频一区二区| 天天综合色天天| 日韩一区二区电影| 久久国产精品第一页|