Skip to content

Commit

Permalink
support setting request headers for http connection to aria2
Browse files Browse the repository at this point in the history
  • Loading branch information
mayswind committed Nov 14, 2022
1 parent 38baed1 commit 7aa3816
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/langs/zh_Hans.txt
Expand Up @@ -184,6 +184,8 @@ Aria2 RPC Address=Aria2 RPC 地址
Aria2 RPC Protocol=Aria2 RPC 协议
Aria2 RPC Http Request Method=Aria2 RPC Http 请求方法
POST method only supports aria2 v1.15.2 and above.=POST 方法仅支持 aria2 v1.15.2 及以上.
Aria2 RPC Request Headers=Aria2 RPC 请求头
Support multiple request headers, one header per line, each line containing "header name: header value".=支持多个请求头, 每个请求头占一行, 每行包含 "请求头名: 请求头值".
Aria2 RPC Secret Token=Aria2 RPC 密钥
Activate=激活
Reset Settings=重置设置
Expand Down
2 changes: 2 additions & 0 deletions src/langs/zh_Hant.txt
Expand Up @@ -184,6 +184,8 @@ Aria2 RPC Address=Aria2 RPC 位址
Aria2 RPC Protocol=Aria2 RPC 協定
Aria2 RPC Http Request Method=Aria2 RPC Http 要求方法
POST method only supports aria2 v1.15.2 and above.=POST 方法僅支援 aria2 v1.15.2 及以上.
Aria2 RPC Request Headers=Aria2 RPC 要求標頭
Support multiple request headers, one header per line, each line containing "header name: header value".=支援多個要求標頭, 每個要求標頭佔一行, 每行包含 "標頭名: 標頭值".
Aria2 RPC Secret Token=Aria2 RPC 金鑰
Activate=啟用
Reset Settings=重設設定
Expand Down
1 change: 1 addition & 0 deletions src/scripts/config/constants.js
Expand Up @@ -36,6 +36,7 @@
rpcInterface: 'jsonrpc',
protocol: 'http',
httpMethod: 'POST',
rpcRequestHeaders: '',
secret: '',
extendRpcServers: [],
webSocketReconnectInterval: 5000,
Expand Down
2 changes: 2 additions & 0 deletions src/scripts/config/defaultLanguage.js
Expand Up @@ -188,6 +188,8 @@
'Aria2 RPC Protocol': 'Aria2 RPC Protocol',
'Aria2 RPC Http Request Method': 'Aria2 RPC Http Request Method',
'POST method only supports aria2 v1.15.2 and above.': 'POST method only supports aria2 v1.15.2 and above.',
'Aria2 RPC Request Headers': 'Aria2 RPC Request Headers',
'Support multiple request headers, one header per line, each line containing "header name: header value".': 'Support multiple request headers, one header per line, each line containing "header name: header value".',
'Aria2 RPC Secret Token': 'Aria2 RPC Secret Token',
'Activate': 'Activate',
'Reset Settings': 'Reset Settings',
Expand Down
21 changes: 21 additions & 0 deletions src/scripts/services/aria2HttpRpcService.js
Expand Up @@ -4,6 +4,7 @@
angular.module('ariaNg').factory('aria2HttpRpcService', ['$http', 'ariaNgConstants', 'ariaNgCommonService', 'ariaNgSettingService', 'ariaNgLogService', function ($http, ariaNgConstants, ariaNgCommonService, ariaNgSettingService, ariaNgLogService) {
var rpcUrl = ariaNgSettingService.getCurrentRpcUrl();
var method = ariaNgSettingService.getCurrentRpcHttpMethod();
var requestHeaders = ariaNgSettingService.getCurrentRpcRequestHeaders();

var getUrlWithQueryString = function (url, parameters) {
if (!url || url.length < 1) {
Expand Down Expand Up @@ -67,6 +68,26 @@
requestContext.url = getUrlWithQueryString(requestContext.url, context.requestBody);
}

if (requestHeaders) {
var lines = requestHeaders.split('\n');
var headers = {};

for (var i = 0; i < lines.length; i++) {
var items = lines[i].split(':');

if (items.length !== 2) {
continue;
}

var name = items[0].trim();
var value = items[1].trim();

headers[name] = value;
}

requestContext.headers = headers;
}

ariaNgLogService.debug('[aria2HttpRpcService.request] ' + (context && context.requestBody && context.requestBody.method ? context.requestBody.method + ' ' : '') + 'request start', requestContext);

return $http(requestContext).then(function onSuccess(response) {
Expand Down
8 changes: 8 additions & 0 deletions src/scripts/services/ariaNgSettingService.js
Expand Up @@ -208,6 +208,7 @@
rpcInterface: setting.rpcInterface,
protocol: setting.protocol,
httpMethod: setting.httpMethod,
rpcRequestHeaders: setting.rpcRequestHeaders,
secret: setting.secret
};
};
Expand Down Expand Up @@ -482,6 +483,9 @@
getCurrentRpcHttpMethod: function () {
return getOption('httpMethod');
},
getCurrentRpcRequestHeaders: function () {
return getOption('rpcRequestHeaders');
},
isCurrentRpcUseWebSocket: function (protocol) {
if (!protocol) {
var options = getOptions();
Expand Down Expand Up @@ -641,6 +645,10 @@
return false;
}

if (options.rpcRequestHeaders !== setting.rpcRequestHeaders) {
return false;
}

if (options.secret !== setting.secret) {
return false;
}
Expand Down
11 changes: 11 additions & 0 deletions src/views/settings-ariang.html
Expand Up @@ -385,6 +385,17 @@
</select>
</div>
</div>
<div class="row" ng-if="setting.protocol === 'http' || setting.protocol === 'https'">
<div class="setting-key setting-key-without-desc col-sm-4">
<span translate>Aria2 RPC Request Headers</span>
<span class="asterisk">*</span>
</div>
<div class="setting-value col-sm-8">
<textarea class="form-control" style="width: 100%;" rows="4" ng-model="setting.rpcRequestHeaders"
ng-change="updateRpcSetting(setting, 'rpcRequestHeaders')"
ng-placeholder="'Support multiple request headers, one header per line, each line containing &quot;header name: header value&quot;.' | translate"></textarea>
</div>
</div>
<div class="row">
<div class="setting-key setting-key-without-desc col-sm-4">
<span translate>Aria2 RPC Secret Token</span>
Expand Down

0 comments on commit 7aa3816

Please sign in to comment.