小编Win*_*ute的帖子

在 Dockerfile 中设置条件变量

我正在尝试使用预定义的TARGETARCHarg变量通过 buildkit 创建多架构 docker 映像。

我想做的是 - 我认为 - 类似 bash 变量间接的东西,但我知道这不受支持,并且我正在努力想出替代方案。

这是我所得到的:

FROM alpine:latest

# Buildkit should populate this on build with e.g. "arm64" or "amd64"
ARG TARGETARCH

# Set some temp variables via ARG... :/
ARG DOWNLOAD_amd64="x86_64"
ARG DOWNLOAD_arm64="aarch64"

ARG DOWNLOAD_URL="https://download.url/path/to/toolkit-${DOWNLOAD_amd64}"

# DOWNLOAD_URL must also be set in container as ENV var.
ENV DOWNLOAD_URL $DOWNLOAD_URL

RUN echo "Installing Toolkit" && \
    curl -sSL ${DOWNLOAD_URL} -o /tmp/toolkit-${DOWNLOAD_amd64}
Run Code Online (Sandbox Code Playgroud)

...这是一个伪代码,但希望说明我正在尝试做的事情:我想要将$DOWNLOAD_amd64or的值$DOWNLOAD_arm64放入$DOWNLOAD_URL,具体取决于$TARGETARCH设置的内容。 …

docker dockerfile multiarch

5
推荐指数
1
解决办法
5998
查看次数

Codeigniter路由正则表达式 - 匹配除"admin"之外的任何字符串

我想将任何与管理路由不匹配的路由发送到我的"事件"控制器.这似乎是一个相当普遍的要求,粗略的搜索引发了各种类似的 问题.

据我所知,解决方案似乎在正则表达式中使用负向前瞻.所以我的尝试看起来像这样:

$route['(?!admin).*'] = "event";
Run Code Online (Sandbox Code Playgroud)

..哪个有效.好吧,有点.它确实向我的"事件"控制器发送任何非管理员请求,但是我需要它来传递匹配的实际字符串:so / my-new-event /被路由到/ event/my-new-event /

我试过了:

$route['(?!admin).*'] = "event/$0";
$route['(?!admin).*'] = "event/$1";
$route['(?!admin)(.*)'] = "event/$0";
$route['(?!admin)(.*)'] = "event/$1";
Run Code Online (Sandbox Code Playgroud)

......以及其他一些越来越随机和绝望的排列.所有结果都是404页面.

将匹配的字符串传递给控制器​​的正确语法是什么?

谢谢 :)

regex routes codeigniter

4
推荐指数
1
解决办法
3218
查看次数

Drupal 7发布选项不可用

我设置了“杂志文章”内容类型,并具有相应的“杂志编辑者”角色,该角色应具有创建和发布文章的权限。

以管理员身份登录后,我可以在文章节点的节点编辑屏幕(即:/ node / 56157 / edit)的底部编辑屏幕底部看到通常的“发布选项”选项卡,并带有一个用于发布节点的复选框。我还可以在修订页面的admin子菜单中看到Publish链接(即:/ node / 56157 / revisions / 60546 / view)。这都是正确的。

但是:以杂志编辑器身份登录时,我看不到节点编辑屏幕底部的“发布选项”选项卡。仅存在三个选项卡:“ URL路径设置”,“修订信息”和“元标记”。查看未发布的修订版时,我也看不到“发布”链接。我希望能够以杂志编辑器身份登录时发布文章节点。

在杂志编辑器的角色权限(/ admin / people / permissions / 11)下,选中了以下复选框:

节点:

  • 查看发布的内容
  • 查看自己未发布的内容
  • 查看内容修订
  • 杂志文章:创建新内容
  • 杂志文章:编辑自己的内容
  • 杂志文章:编辑任何内容
  • 杂志文章:删除自己的内容
  • 杂志文章:删除任何内容

修订:

  • 查看修订状态消息
  • 编辑内容修订
  • 发布(任何人的内容)内容修订
  • 取消发布当前修订(包含任何人的内容)
  • 杂志文章:查看自己内容的修订
  • 杂志文章:查看任何人的内容的修订
  • 杂志文章:发布自己内容的修订版
  • 杂志文章:发布任何人的内容的修订

谷歌搜索似乎建议我需要在“节点”下设置“管理节点”权限。但是,我在看起来像“管理节点”的列表中找不到权限。

为什么发布选项不可用?

permissions publish revision drupal

4
推荐指数
2
解决办法
5078
查看次数

将 SFTP 用户限制到主目录

我正在尝试在 EC2 ubuntu 服务器上设置客户端 SFTP 空间,访问仅限于该用户的主目录。只有大约 6000 个其他主题与此相关,而且我已经在其他选项卡中打开了其中的大部分。这看起来很简单。

我弄完了:

$ sudo groupadd loginsftp
$ sudo groupadd loginssh
$ sudo adduser sftpuser
$ sudo gpasswd -a sftpuser loginsftp
$ sudo chown root:root home/sftpuser


$ sudo su sftpuser
$ groups
> sftpuser loginsftp
Run Code Online (Sandbox Code Playgroud)

我的 /etc/ssh/sshd_config 底部看起来像:

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

UsePAM yes

Match Group loginssh
  PasswordAuthentication no

Match Group loginsftp
  PasswordAuthentication yes
  ChrootDirectory /home/%u
  X11Forwarding no
  AllowTcpForwarding no
  ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)

.. 我已经重新启动了 ssh 服务。

但我似乎无法限制该用户登录。我仍然可以(从我的本地机器):

$ sftp sftpuser@ec2-server.amazonaws.com
sftpuser@ec2-server.amazonaws.com's password: …
Run Code Online (Sandbox Code Playgroud)

ubuntu sftp amazon-ec2

3
推荐指数
1
解决办法
4645
查看次数

多个机器人元标签

我最近继承了一个代码库并发现了这个宝石:

{% if PAGE_EXTRAS.hide_from_sitemap %}
    <META NAME="ROBOTS" CONTENT="NOINDEX, FOLLOW">
    <META NAME="ROBOTS" CONTENT="INDEX, NOFOLLOW">
    <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
{% endif %}
Run Code Online (Sandbox Code Playgroud)

我不知道它想做什么。您是否有理由在这样的网站中放置多个明显冲突的机器人标签?或者它真的像我无知的眼睛看起来那么疯狂吗?

meta robots.txt

3
推荐指数
1
解决办法
3297
查看次数

在 nginx $args 中使用正则表达式捕获组

作为一些背景,我正在尝试修复带有重复参数的请求,例如:

/products/compare/?ids=554?ids=554
/products/compare/?ids=595,662,726?ids=595,662,726
Run Code Online (Sandbox Code Playgroud)

我的修复 - 有效 - 看起来像这样:

location /products/compare/ {
    if ( $args ~ "(ids=[\d,]+)\?ids=[\d,]+" ) {
        set $id $1;
        rewrite ^.*$ $scheme://$host/$uri$is_args$id? permanent;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是关于set $id $1;以及为什么有必要

我直接在重写中使用 capture-group变量$1

rewrite ^.*$ $scheme://$host/$uri$is_args$1? permanent;
Run Code Online (Sandbox Code Playgroud)

但该变量并未被填充。

为什么不?

regex nginx

2
推荐指数
1
解决办法
5253
查看次数