使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型

Posted

技术标签:

【中文标题】使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型【英文标题】:Directadmin upload logo using CMD_SKINS with error cannot get mime-type 【发布时间】:2021-05-12 17:30:31 【问题描述】:

我正在尝试使用 CMD_API_SKINS 上传自定义徽标

这是我使用 curl + bash 的完整代码:

#/bin/bash

# DA needs this path

mkdir -p /home/tmp

# Assume my logo file is already here:

default_logo_file_home="/home/tmp/logo.png"

# The logo file is set to nobody:nogroup

chown nobody:nogroup "$default_logo_file_home"

## Setup query data for curl:

username="admin"

password="12321aa"

da_port="2222"

host_server="server.domain.com"

ssl="https"

skin_name="evolution"

command="CMD_API_SKINS"

data="action=upload_logo&file=$default_logo_file_home&json=yes&name=$skin_name&which=1"

method="POST"

curl --silent --request "$method" --user "$username":"$password" --data "$data" "$ssl://$host_server:$da_port/$command"

在调试此 API 时,我收到如下错误:

text='An Error Occurred'

        result='Cannot get mime-type for log<br>

似乎 DA 正在尝试解析并获取文件“logo.png”的扩展名,但它无法

完整的错误日志:

DirectAdmin 1.61.5

Accepting Connections on port 2222

Sockets::handshake - begin

Sockets::handshake - end

/CMD_API_SKINS

0: Accept: */*

1: Authorization: Basic bWF4aW93bng3OnhGVEVHe***jUSg/UTRTfVdHYW0+fWNURn5ATWN***HFbZGpMezlQZ***=

2: Content-Length: 75

3: Content-Type: application/x-www-form-urlencoded

4: Host: server.domain.com:2222

5: User-Agent: curl/7.75.0

Post string: action=upload_logo&file=/home/tmp/logo2.png&json=yes&name=evolution&which=2

auth.authenticated

User::deny_override:/CMD_API_SKINS:  call_level=2, depth1: aborting due to do depth

User::deny_override:/CMD_DOMAIN:  call_level=2, depth1: aborting due to do depth

User::deny_override:/CMD_DOMAIN:  call_level=1, depth2: aborting due to do depth

Plugin::addHooks: start

Plugin::addHooks: end

Command::doCommand(/CMD_API_SKINS)

cannot get mime type for log

Dynamic(api=1, error=1):

        text='An Error Occurred'

        result='Cannot get mime-type for log<br>

'

Command::doCommand(/CMD_API_SKINS) : finished

Command::run: finished /CMD_API_SKINS

我也尝试像这样对查询进行编码,但仍然遇到同样的错误

default_logo_file_home="%2Fhome%2Ftmp%2Flogo%2Epng"
data="action=upload%5Flogo&file=$default_logo_file_home&json=yes&name=$skin_name&which=%31"

有什么解释这里发生了什么吗?是否可以使用此 API 上传徽标?

【问题讨论】:

【参考方案1】:

好的,我找到了任何地方都没有记录的技巧。上传的文件需要附加一个随机字符串。所以我改变了这个:

default_logo_file_home="/home/tmp/logo.png"

进入这个:

RANDOM_STR="EbYIES"

default_logo_file_home="/home/tmp/logo.png$RANDOM_STR"

现在完美运行

【讨论】:

以上是关于使用 CMD_SKINS 的 Directadmin 上传徽标出现错误无法获取 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章

使用“使用严格”作为“使用强”的备份

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

Sqlmap的使用

Kettle java脚本组件的使用说明(简单使用升级使用)

PageHelp的使用getParameter的使用zpage-nav的使用QRcode的使用wxpay微信支付的使用jackson-xml数据的转换

hbs使用手册