From 2e00650afe99f91a58792a6ced3ee361aac6a49f Mon Sep 17 00:00:00 2001 From: atsika Date: Tue, 29 Apr 2025 14:05:18 +0200 Subject: [PATCH] Initial commit --- .gitignore | 13 + LICENSE | 674 ++++++++++++++++++++++++++ Makefile | 18 + README.md | 383 +++++++++++++++ cmd/agent/main.go | 283 +++++++++++ cmd/proxy/main.go | 782 +++++++++++++++++++++++++++++++ docs/access-keys.png | Bin 0 -> 96892 bytes docs/create-storage-account.png | Bin 0 -> 97875 bytes docs/list-storage-accounts.png | Bin 0 -> 47791 bytes docs/logo.png | Bin 0 -> 182070 bytes example_config.json | 4 + go.mod | 40 ++ go.sum | 193 ++++++++ pkg/protocol/base.go | 264 +++++++++++ pkg/protocol/connection.go | 89 ++++ pkg/protocol/crypto.go | 98 ++++ pkg/protocol/errors.go | 44 ++ pkg/protocol/protocol.go | 108 +++++ pkg/proxy/server/errors.go | 44 ++ pkg/proxy/server/server.go | 302 ++++++++++++ pkg/proxy/socks/address.go | 97 ++++ pkg/proxy/socks/bind.go | 15 + pkg/proxy/socks/connect.go | 172 +++++++ pkg/proxy/socks/constants.go | 48 ++ pkg/proxy/socks/socks.go | 264 +++++++++++ pkg/proxy/socks/udp_associate.go | 323 +++++++++++++ pkg/transport/blob.go | 266 +++++++++++ pkg/transport/transport.go | 38 ++ 28 files changed, 4562 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 README.md create mode 100644 cmd/agent/main.go create mode 100644 cmd/proxy/main.go create mode 100644 docs/access-keys.png create mode 100644 docs/create-storage-account.png create mode 100644 docs/list-storage-accounts.png create mode 100644 docs/logo.png create mode 100644 example_config.json create mode 100644 go.mod create mode 100644 go.sum create mode 100644 pkg/protocol/base.go create mode 100644 pkg/protocol/connection.go create mode 100644 pkg/protocol/crypto.go create mode 100644 pkg/protocol/errors.go create mode 100644 pkg/protocol/protocol.go create mode 100644 pkg/proxy/server/errors.go create mode 100644 pkg/proxy/server/server.go create mode 100644 pkg/proxy/socks/address.go create mode 100644 pkg/proxy/socks/bind.go create mode 100644 pkg/proxy/socks/connect.go create mode 100644 pkg/proxy/socks/constants.go create mode 100644 pkg/proxy/socks/socks.go create mode 100644 pkg/proxy/socks/udp_associate.go create mode 100644 pkg/transport/blob.go create mode 100644 pkg/transport/transport.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f706eaa --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +agent +agent.exe +!agent/ +proxy +proxy.exe +!proxy/ +config.json +*-config.json +.DS_Store +.cursor/ +*.txt +__blobstorage__/ +__azurite*.json \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e72bfdd --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2438c17 --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +.PHONY: all clean proxy agent + +ifndef TOKEN +CONN_STRING ?= +else +CONN_STRING = -X 'main.ConnString=$(TOKEN)' +endif + +all: clean proxy agent + +proxy: + go build -ldflags="-s -w" -trimpath -o proxy cmd/proxy/main.go + +agent: + go build -ldflags="-s -w $(CONN_STRING)" -trimpath -o agent cmd/agent/main.go + +clean: + rm -f proxy agent \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..f3c7e7d --- /dev/null +++ b/README.md @@ -0,0 +1,383 @@ +# ProxyBlob + +

+ ProxyBlob logo +

+

SOCKS proxy over Azure Storage Blob service

+ +## Overview + +ProxyBlob is a tool designed to create SOCKS proxy tunnels through Azure Blob Storage service. This is particularly useful in environments where direct network connectivity is restricted but `*.blob.core.windows.net` is accessible. + +The system consists of two components: + +1. **Proxy Server**: Runs on your local machine and provides a SOCKS interface for your applications +2. **Agent**: Runs inside the target network and communicates with the proxy through Azure Blob Storage + +## Features + +- SOCKS5 protocol (CONNECT and UDP ASSOCIATE) +- Communication through Azure Blob Storage +- Interactive CLI with auto-completion +- Multiple agent management +- Local proxy server + +## Prerequisites + +- Go 1.23 or higher +- An Azure Storage Account + +### Storage Account + +#### Azure + +In order to use ProxyBlob, you will need an Azure Subscription to create an Azure Storage Account. Once you have a subscription, you can create a storage account in the Azure Portal or using the Azure CLI. + +Here are the steps to create a storage account using the Azure Portal: + +1. Go to [https://portal.azure.com](https://portal.azure.com) +2. Login with your Azure account +3. In the top Search bar, type "Storage accounts" +4. Click on "+ Create" +5. Fill in the required fields +6. Click on "Review + create" +7. Click on "Create" + +Storage account settings: + +- **Subscription**: Select your Azure subscription +- **Resource Group**: Create new Resource Group or select existing +- **Storage account name**: Choose a name for your storage account +- **Location**: Select a location near you +- **Performance**: Premium ⚠️ we will require low latency and high throughput +- **Premium account type**: Block blobs (high transaction rates) +- **Redundancy**: Locally-redundant Storage (LRS) + +

+ Create Storage Account +

+ + +Once the deployment is complete, you will see the newly created storage account in the list. + +

+ List of Storage accounts +

+ +Finally, click on "Security + networking" and then "Access keys" to get the storage account key. + +

+ Access Keys +

+ +Here are the steps to create a storage account using the Azure CLI: + +```bash +# Login to Azure +az login + +# Create a resource group +az group create --name "proxyblob-resource-group" --location "Central US" + +# Create a storage account +az storage account create --name "myproxyblob" --resource-group "proxyblob-resource-group" --location "Central US" --sku "Premium_LRS" --kind BlockBlobStorage + +# Get the storage account key +az storage account keys list --account-name "myproxyblob" --output table +``` + +You should see displayed the storage account keys. + +#### Azurite + +If you want to test the tool, you can also use [Azurite] (https://github.com/Azure/Azurite), a lightweight server clone of Azure Storage that can be run locally. To install Azurite, I recommend using either [Visual Studio Code extension](https://marketplace.visualstudio.com/items?itemName=Azurite.azurite) or [Docker](https://hub.docker.com/r/microsoft/azure-storage-azurite). + +For the extension, installation is straightforward: + +1. Go to the Extensions tab +2. Search for `Azurite.azurite` +3. Click "Install" + +You should see down right of your editor 3 buttons like this: + +``` +[Azurite Table Service] [Azurie Queue Service] [Azurite Blob Service] +``` + +Press on the `[Azurite Blob Service]` and the service should be running. + +For Docker, you will have to pull the image and run it: + +``` +docker pull mcr.microsoft.com/azure-storage/azurite +docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite +``` + +The default storage account name is `devstoreaccount1` and the account key is `Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==`. + +## Installation + +```bash +# Clone the repository +git clone https://github.com/quarkslab/proxyblob +cd proxyblob + +# Build both components +make +``` + +This will produce the following binaries: + +- `proxy` - the proxy server running on your machine +- `agent` - the agent running on the target + +## Configuration + +Create a `config.json` file based on the [example](example_config.json) with your Azure Storage credentials: + +```json +{ + "storage_url": "http://localhost:10000/", // omit if using Azure + "storage_account_name": "your-storage-account-name", + "storage_account_key": "your-storage-account-key" +} +``` + +## Usage + +### Starting the Proxy Server + +```bash +./proxy -c my-config.json # if omitted, config.json is used by default +``` + +This will start an interactive CLI with the following commands: + +``` +Commands: + clear clear the screen + create, new create a new agent container and generate its connection string + delete, rm delete an existing agent container + exit exit the shell + help use 'help [command]' for command help + list, ls list all existing agent containers + select, use select an agent for subsequent commands + start, proxy start SOCKS proxy server + stop stop running proxy for the selected agent +``` + +Once the proxy server is running, you can create a new agent container by using the `create` command. + +``` +proxyblob » create +16:28:37 INF Agent container created successfully container_id=5f5250e9-5518-4682-90ea-f61abf797654 +16:28:37 INF Connection string generated connection_string=aHR0cDovL2xvY2FsaG9zdDoxMDAwMC9kZXZzdG9yZWFjY291bnQxLzVmNTI1MGU5LTU1MTgtNDY4Mi05MGVhLWY2MWFiZjc5NzY1ND9zZT0yMDI1LTA0LTI0VDE0JTNBMjglM0EzN1omc2lnPXpjNUNVYVZKJTJGS1duY3RtbnlNZ0clMkZZNkNrRzZHYXJzMXRFTXkxR0ZiTVVZJTNEJnNwPXJ3JnNwcj1odHRwcyUyQ2h0dHAmc3I9YyZzdD0yMDI1LTA0LTE3VDE0JTNBMjMlM0EzN1omc3Y9MjAyMC0xMC0wMg +``` + +Use the connection string generated with the agent (see below [Starting the Agent](#starting-the-agent)). If the agent connects successfully, you should see the “Agent Info” column filled in when you list the agents with the `list` command. + +``` +proxyblob » list +╭──────────────────────────────────────┬────────────┬────────────┬─────────────────────┬─────────────────────╮ +│ CONTAINER ID │ AGENT INFO │ PROXY PORT │ FIRST SEEN │ LAST SEEN │ +├──────────────────────────────────────┼────────────┼────────────┼─────────────────────┼─────────────────────┤ +│ 5f5250e9-5518-4682-90ea-f61abf797654 │ atsika@qb │ │ 2025-04-17 14:28:37 │ 2025-04-17 14:28:37 │ +╰──────────────────────────────────────┴────────────┴────────────┴─────────────────────┴─────────────────────╯ +``` + +Select the agent using `select ` and start the proxy listener (by default it listens on localhost:1080) by using the `start` command. + +``` +atsika@qb » select 5f5250e9-5518-4682-90ea-f61abf797654 +17:17:51 INF Agent selected agent=atsika@qb +atsika@qb » start +17:17:58 INF Proxy started successfully agent=atsika@qb port=1080 +``` + +You can now use for example [proxychains](https://github.com/rofl0r/proxychains-ng) to tunnel the traffic through the SOCKS proxy. + +```bash +proxychains xfreerdp /v:dc01.domain.local /u:Administrator +``` + +### Starting the Agent + +In order to run, the agent requires a connection string that can be generated using the proxy. You can pass it as an argument or directly embed it at compile-time. + +```bash +# Via argument +./agent -c + +# Build the agent with embedded connection string +make agent TOKEN= +./agent +``` + +## Architecture + +The communication flow works like this: + +1. The agent periodically polls an Azure Blob container for encoded packets in a request blob +2. The proxy writes encoded packets to the Azure Blob container in a request blob +3. When the agent finds a packet, it processes it and writes the response back to a response blob +4. The proxy reads the response and maintains the SOCKS connection with client applications + +The global flow is the following: + +```mermaid +graph TB + %% Client applications + Client1[Client Application] -->|SOCKS5 Request| SocksServer + Client2[Web Browser] -->|SOCKS5 Request| SocksServer + + %% Proxy Server Components + subgraph "Proxy Server (Local Machine)" + SocksServer[SOCKS5 Server] + CLI[Interactive CLI] + ProxyHandler[Proxy Handler] + TransportP[Blob Transport] + end + + %% Connection between components + CLI -->|Commands| SocksServer + SocksServer -->|Process Request| ProxyHandler + ProxyHandler -->|Encode Packets| TransportP + TransportP -->|Receive Responses| ProxyHandler + ProxyHandler -->|Return Data| SocksServer + + %% Azure Blob Storage + subgraph "Azure Blob Storage" + RequestBlob[Request Blob] + ResponseBlob[Response Blob] + end + + %% Connection to Azure + TransportP -->|Write| RequestBlob + ResponseBlob -->|Read| TransportP + + %% Agent Components + subgraph "Agent (Target Network)" + AgentPoller[Polling Component] + TransportA[Blob Transport] + SocksHandler[SOCKS Handler] + CommandProcessor[Command Processor] + end + + %% Agent connections + RequestBlob -->|Poll| AgentPoller + AgentPoller -->|Process| TransportA + TransportA -->|Decode Packets| SocksHandler + SocksHandler -->|Process Commands| CommandProcessor + + %% Command Processing - Fixed syntax + subgraph "Command Processing" + Connect["CONNECT"] + Bind["TODO: BIND"] + UDP["UDP ASSOCIATE"] + end + + CommandProcessor -->|Route| Connect + CommandProcessor -->|Route| Bind + CommandProcessor -->|Route| UDP + + %% Target Connections + Connect -->|TCP Connection| TargetServer1[Target Server] + UDP -->|UDP Connection| TargetServer2[Target Server] + + %% Return path + TargetServer1 -->|Response Data| SocksHandler + TargetServer2 -->|UDP Data| SocksHandler + SocksHandler -->|Encode Response| TransportA + TransportA -->|Write| ResponseBlob +``` + +An example of a CONNECT operation is the following: + +```mermaid +sequenceDiagram + participant Client as Client Application + participant Proxy as Proxy Server + participant AzureStor as Azure Blob Storage + participant Agent as Agent + participant Target as Target Server + + Note over Client,Target: SOCKS5 Protocol Flow + + %% Proxy Server and Agent Initialization + Proxy->>AzureStor: Initialize connection + Agent->>AzureStor: Start polling for requests + + %% Client Connection and Authentication + Client->>Proxy: TCP Connection + Proxy->>Client: Auth methods (NoAuth supported) + Client->>Proxy: Select Auth method + + %% Command Processing + Client->>Proxy: CONNECT command + target address + Proxy->>AzureStor: Write CONNECT request packet to Request Blob + Agent->>AzureStor: Poll and retrieve CONNECT request + + %% Target Connection + Agent->>Target: Establish TCP connection + Target->>Agent: Connection established + Agent->>AzureStor: Write connection success to Response Blob + Proxy->>AzureStor: Poll and retrieve response + Proxy->>Client: CONNECT success response + + %% Data Transfer (Bidirectional) + Client->>Proxy: Send data + Proxy->>AzureStor: Write data packet to Request Blob + Agent->>AzureStor: Poll and retrieve data packet + Agent->>Target: Forward data + + Target->>Agent: Response data + Agent->>AzureStor: Write response data to Response Blob + Proxy->>AzureStor: Poll and retrieve response data + Proxy->>Client: Forward response data +``` + +## Troubleshooting + +**Why does my agent immediately stop running ?** + +There might be several reasons why your agent stops immediately after you run it. Check its exit code: +```sh +# Bash +echo $? +``` +```cmd +REM CMD +echo %ERRORLEVEL% +``` +```pwsh +# PowerShell +echo $LastExitCode +``` + +Each exit code describes why the agent stopped running: + +| Exit code | Reason | +| --------- | ------------------------------------------- | +| 0 | No error | +| 1 | The context has been canceled | +| 2 | The connection string is missing | +| 3 | The connection string is invalid or expired | +| 4 | The agent failed to write its metadata | +| 5 | The agent container is not found | + +If you encounter issues: + +1. Check Azure credentials and permissions +2. Verify connectivity to Azure Blob Storage +3. Check for any firewall rules blocking outbound connections +4. Ensure the agent is running and properly connected + +## TODO + +- BIND command implementation (currently not working) +- Enhanced error handling and recovery +- Improve proxy speed + +## License + +[GNU GPLv3 License](LICENSE) \ No newline at end of file diff --git a/cmd/agent/main.go b/cmd/agent/main.go new file mode 100644 index 0000000..3e61df2 --- /dev/null +++ b/cmd/agent/main.go @@ -0,0 +1,283 @@ +// Package main implements the SOCKS proxy agent. +package main + +import ( + "bytes" + "context" + "encoding/base64" + "errors" + "flag" + "fmt" + "net/url" + "os" + "os/signal" + "os/user" + "strings" + "syscall" + "time" + + "github.com/Azure/azure-storage-blob-go/azblob" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + + "proxyblob/pkg/protocol" + proxy "proxyblob/pkg/proxy/socks" + "proxyblob/pkg/transport" +) + +// Exit codes. +const ( + Success = 0 // success + ErrContextCanceled = 1 // context canceled + ErrNoConnectionString = 2 // missing connection string + ErrConnectionStringError = 3 // invalid connection string + ErrInfoBlobError = 4 // info blob write failed + ErrContainerNotFound = 5 // container not found +) + +// ConnString holds the Azure connection string. +// Can be set at compile time or via command line flag. +var ConnString string + +// Blob names for proxy-agent communication. +const ( + InfoBlobName = "info" // agent metadata + RequestBlobName = "request" // proxy-to-agent traffic + ResponseBlobName = "response" // agent-to-proxy traffic +) + +// InfoKey defines the XOR encryption key for agent information +// Security Note: Changing this key requires synchronized updates on both proxy and agent +var ( + InfoKey = []byte{0xDE, 0xAD, 0xB1, 0x0B} +) + +// Agent manages proxy operations and blob storage communication. +type Agent struct { + ContainerURL azblob.ContainerURL // Azure container access + Handler *proxy.SocksHandler // SOCKS handler +} + +// NewAgent creates an agent from a connection string. +func NewAgent(ctx context.Context, connString string) (*Agent, int) { + storageURL, containerID, sasToken, errCode := ParseConnectionString(connString) + if errCode != Success { + return nil, errCode + } + + pipeline := azblob.NewPipeline( + azblob.NewAnonymousCredential(), + azblob.PipelineOptions{}, + ) + + fullURL := fmt.Sprintf("%s/%s?%s", storageURL, containerID, sasToken) + containerURL, err := url.Parse(fullURL) + if err != nil { + return nil, ErrConnectionStringError + } + + container := azblob.NewContainerURL(*containerURL, pipeline) + blobTransport := transport.NewBlobTransport( + container.NewBlockBlobURL(RequestBlobName), // read + container.NewBlockBlobURL(ResponseBlobName), // write + ) + handler := proxy.NewSocksHandler(ctx, blobTransport) + + agent := &Agent{ + ContainerURL: container, + Handler: handler, + } + + return agent, Success +} + +// Start begins processing proxy requests. +func (a *Agent) Start(ctx context.Context) int { + // Push agent information to blob storage + if err := a.WriteInfoBlob(ctx); err != Success { + a.Stop() + return ErrContainerNotFound + } + + // Start the container monitoring goroutine + go a.healthCheck(ctx) + + // Start the handler + a.Handler.Start("") + + // Wait for handler context to be done + <-a.Handler.Ctx.Done() + + // Check if context was canceled externally + if errors.Is(ctx.Err(), context.Canceled) { + return ErrContextCanceled + } + + return Success +} + +// Stop terminates agent operations. +func (a *Agent) Stop() { + a.Handler.Stop() +} + +// healthCheck verifies container existence every 30s and stops the agent if it's unavailable. +func (a *Agent) healthCheck(ctx context.Context) { + ticker := time.NewTicker(30 * time.Second) + defer ticker.Stop() + + for { + select { + case <-ctx.Done(): + return + case <-ticker.C: + blobURL := a.ContainerURL.NewBlockBlobURL(InfoBlobName) + _, err := blobURL.GetProperties(ctx, azblob.BlobAccessConditions{}, azblob.ClientProvidedKeyOptions{}) + if err != nil { + if storageErr, ok := err.(azblob.StorageError); ok { + if storageErr.ServiceCode() == azblob.ServiceCodeContainerNotFound || + storageErr.ServiceCode() == azblob.ServiceCodeContainerBeingDeleted { + a.Stop() + return + } + } + } + } + } +} + +// WriteInfoBlob updates agent metadata. +func (a *Agent) WriteInfoBlob(ctx context.Context) int { + info := GetCurrentInfo() + encryptedInfo := protocol.Xor([]byte(info), InfoKey) + + blobURL := a.ContainerURL.NewBlockBlobURL(InfoBlobName) + _, err := blobURL.Upload( + ctx, + bytes.NewReader(encryptedInfo), + azblob.BlobHTTPHeaders{ContentType: "text/plain"}, + azblob.Metadata{}, + azblob.BlobAccessConditions{}, + azblob.DefaultAccessTier, + nil, + azblob.ClientProvidedKeyOptions{}, + azblob.ImmutabilityPolicyOptions{}, + ) + + if err != nil { + // Check for context cancellation first + if errors.Is(ctx.Err(), context.Canceled) { + return ErrContextCanceled + } + + // Check for container deletion + if storageErr, ok := err.(azblob.StorageError); ok { + if storageErr.ServiceCode() == azblob.ServiceCodeContainerNotFound || + storageErr.ServiceCode() == azblob.ServiceCodeContainerBeingDeleted { + return ErrContainerNotFound + } + // Other storage errors + return ErrInfoBlobError + } + + return ErrInfoBlobError + } + + return Success +} + +// ParseConnectionString extracts storage URL, container ID and SAS token from a connection string. +func ParseConnectionString(connString string) (string, string, string, int) { + // Check for empty string first + if connString == "" { + return "", "", "", ErrNoConnectionString + } + + // Try to decode the base64 encoded string + decoded, err := base64.RawStdEncoding.DecodeString(connString) + if err != nil { + return "", "", "", ErrConnectionStringError + } + + // Parse the URL and extract components + u, err := url.Parse(string(decoded)) + if err != nil { + return "", "", "", ErrConnectionStringError + } + + // Extract path components and query string + path := strings.TrimPrefix(u.Path, "/") + if path == "" { + return "", "", "", ErrConnectionStringError + } + + if u.RawQuery == "" { + return "", "", "", ErrConnectionStringError + } + + // Return the storage URL, container ID and SAS token + storageURL := fmt.Sprintf("%s://%s", u.Scheme, u.Host) + return storageURL, path, u.RawQuery, Success +} + +// GetCurrentInfo returns username@hostname. +func GetCurrentInfo() string { + hostname, err := os.Hostname() + if err != nil { + hostname = "unknown" + } + + currentUser, err := user.Current() + if err != nil { + currentUser = &user.User{ + Username: "unknown", + } + } + + return fmt.Sprintf("%s@%s", currentUser.Username, hostname) +} + +// init configures logging with zerolog +// Sets up console output and INFO level logging +func init() { + // Configure logging + zerolog.TimeFieldFormat = zerolog.TimeFormatUnix + zerolog.SetGlobalLevel(zerolog.InfoLevel) + + // Use a more human-friendly output for console + log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) +} + +// main is the entry point for the agent process +// Handles command-line flags, signal management, and agent lifecycle +func main() { + // Parse command line flags + flag.StringVar(&ConnString, "c", ConnString, "Connection string") + flag.Parse() + + if ConnString == "" { + os.Exit(ErrNoConnectionString) + } + + // Create context that can be cancelled with CTRL+C + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // Handle SIGINT (CTRL+C) and SIGTERM + sig := make(chan os.Signal, 1) + signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM) + go func() { + <-sig + cancel() + }() + + // Create the agent + agent, err := NewAgent(ctx, ConnString) + if err != Success { + os.Exit(err) + } + + // Start the agent + ErrCode := agent.Start(ctx) + os.Exit(ErrCode) +} diff --git a/cmd/proxy/main.go b/cmd/proxy/main.go new file mode 100644 index 0000000..cdb3cda --- /dev/null +++ b/cmd/proxy/main.go @@ -0,0 +1,782 @@ +// Package main implements the SOCKS proxy server. +package main + +import ( + "context" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "net" + "net/url" + "os" + "path/filepath" + "strings" + "sync" + "time" + + "github.com/Azure/azure-storage-blob-go/azblob" + "github.com/desertbit/grumble" + "github.com/google/uuid" + "github.com/jedib0t/go-pretty/table" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + + "proxyblob/pkg/protocol" + proxy "proxyblob/pkg/proxy/server" + "proxyblob/pkg/transport" +) + +// CLI banner with version. +const banner = ` + ____ ____ _ _ + | _ \ _ __ _____ ___ _| __ )| | ___ | |__ + | |_) | '__/ _ \ \/ / | | | _ \| |/ _ \| '_ \ + | __/| | | (_) > <| |_| | |_) | | (_) | |_) | + |_| |_| \___/_/\_\\__, |____/|_|\___/|_.__/ + |___/ + + SOCKS Proxy over Azure Blob Storage (v1.0) + ------------------------------------------ + +` + +// Blob names for proxy-agent communication. +const ( + InfoBlobName = "info" // agent metadata + RequestBlobName = "request" // proxy-to-agent traffic + ResponseBlobName = "response" // agent-to-proxy traffic +) + +// InfoKey defines the XOR encryption key for agent information +// Security Note: Changing this key requires synchronized updates on both proxy and agent +var ( + InfoKey = []byte{0xDE, 0xAD, 0xB1, 0x0B} +) + +// Config holds Azure Storage credentials. +type Config struct { + StorageAccountName string `json:"storage_account_name"` // account ID + StorageAccountKey string `json:"storage_account_key"` // access key + StorageURL string `json:"storage_url,omitempty"` // custom endpoint (for development purposes) +} + +// StorageManager handles Azure Storage operations. +type StorageManager struct { + ServiceURL *azblob.ServiceURL // storage endpoint + SharedKeyCredential *azblob.SharedKeyCredential // auth credentials +} + +// ContainerInfo tracks proxy agent metadata. +type ContainerInfo struct { + ID string // container ID + AgentInfo string // username@hostname + ProxyPort string // SOCKS port + CreatedAt time.Time // creation time + LastActivity time.Time // last operation +} + +// Global state. +var ( + config *Config // app config + storageManager *StorageManager // storage access + selectedAgent string // current agent + runningProxies sync.Map // active proxies +) + +// LoadConfig reads and parses config file. +func LoadConfig(configPath string) (*Config, error) { + // Use default config path (./config.json) if none provided + if configPath == "" { + configPath = "./config.json" + } + + // Get absolute path for clearer error messages + absPath, err := filepath.Abs(configPath) + if err != nil { + return nil, fmt.Errorf("failed to resolve config path: %v", err) + } + + // Check if config file exists + if _, err := os.Stat(absPath); os.IsNotExist(err) { + return nil, fmt.Errorf("configuration file not found at %s", absPath) + } + + // Read and parse the configuration file + data, err := os.ReadFile(absPath) + if err != nil { + return nil, fmt.Errorf("failed to read config file %s: %v", absPath, err) + } + + config := new(Config) + if err := json.Unmarshal(data, config); err != nil { + return nil, fmt.Errorf("failed to parse config file %s: %v", absPath, err) + } + + // Validate configuration + if err := config.Validate(); err != nil { + return nil, err + } + + return config, nil +} + +// Validate checks required config fields. +func (config *Config) Validate() error { + if config.StorageAccountName == "" { + return fmt.Errorf("storage_account_name is required") + } + if config.StorageAccountKey == "" { + return fmt.Errorf("storage_account_key is required") + } + return nil +} + +// NewStorageManager creates Azure Storage client. +func NewStorageManager(config *Config) (*StorageManager, error) { + // Create credentials using the storage account name and key + credential, err := azblob.NewSharedKeyCredential( + config.StorageAccountName, + config.StorageAccountKey, + ) + if err != nil { + return nil, fmt.Errorf("failed to create storage credentials: %v", err) + } + + // Create a pipeline for storage operations + pipeline := azblob.NewPipeline( + credential, + azblob.PipelineOptions{}, + ) + + // Build the service URL for the storage account + var serviceURL *url.URL + if config.StorageURL != "" { + // Use the custom storage URL provided in the config (for Azurite support) + serviceURL, err = url.Parse(config.StorageURL) + if err != nil { + return nil, fmt.Errorf("failed to parse storage URL: %v", err) + } + serviceURL = serviceURL.JoinPath(config.StorageAccountName) + } else { + // Use the default Azure Storage URL format + serviceURL, err = url.Parse(fmt.Sprintf("https://%s.blob.core.windows.net/", config.StorageAccountName)) + if err != nil { + return nil, fmt.Errorf("failed to parse service URL: %v", err) + } + } + + service := azblob.NewServiceURL(*serviceURL, pipeline) + + return &StorageManager{ + ServiceURL: &service, + SharedKeyCredential: credential, + }, nil +} + +// CreateAgentContainer creates a new container for agent communication. +// Returns the container ID and connection string that should be provided to the agent. +func (sm *StorageManager) CreateAgentContainer(expiry time.Duration) (string, string, error) { + // Generate a unique ID for the container + containerID := uuid.New().String() + containerURL := sm.ServiceURL.NewContainerURL(containerID) + + ctx := context.Background() + + // Create the container with private access level + _, err := containerURL.Create(ctx, azblob.Metadata{}, azblob.PublicAccessNone) + if err != nil { + return "", "", fmt.Errorf("failed to create container: %v", err) + } + + // Initialize the required blobs + blobNames := []string{InfoBlobName, RequestBlobName, ResponseBlobName} + for _, blobName := range blobNames { + blobURL := containerURL.NewBlockBlobURL(blobName) + + // Create an empty blob - it will be populated later by the agent or proxy + _, err := blobURL.Upload( + ctx, + strings.NewReader(""), // Empty content initially + azblob.BlobHTTPHeaders{ + ContentType: "application/octet-stream", + }, + azblob.Metadata{ + "created": time.Now().UTC().Format(time.RFC3339), + }, + azblob.BlobAccessConditions{}, + azblob.DefaultAccessTier, + azblob.BlobTagsMap{}, // No initial tags + azblob.ClientProvidedKeyOptions{}, // No client-provided encryption + azblob.ImmutabilityPolicyOptions{}, // No immutability policy + ) + + if err != nil { + // If blob creation fails, attempt to clean up the container + if _, delErr := containerURL.Delete(ctx, azblob.ContainerAccessConditions{}); delErr != nil { + return "", "", fmt.Errorf("failed to delete container after blob creation failed: %v", delErr) + } + return "", "", fmt.Errorf("failed to create %s blob: %v", blobName, err) + } + } + + // Generate a SAS token for the container + sasToken, err := sm.GenerateSASToken(containerID, expiry) + if err != nil { + // If SAS token generation fails, clean up the container + if _, delErr := containerURL.Delete(ctx, azblob.ContainerAccessConditions{}); delErr != nil { + return "", "", fmt.Errorf("failed to delete container after SAS token generation failed") + } + return "", "", fmt.Errorf("failed to generate SAS token") + } + + connectionString, _ := url.Parse(storageManager.ServiceURL.String()) + connectionString = connectionString.JoinPath(containerID) + connString := connectionString.String() + "?" + sasToken + + return containerID, connString, nil +} + +// GenerateSASToken creates a Shared Access Signature token for container access. +// The token provides limited-time read/write access to specific container resources. +func (sm *StorageManager) GenerateSASToken(containerName string, expiry time.Duration) (string, error) { + // Start time is 5 minutes before now to avoid clock skew issues + startTime := time.Now().UTC().Add(-5 * time.Minute) + + // Set expiry time (default 7 days) + expiryTime := time.Now().UTC().Add(expiry) + + // Define the permissions for the SAS token + permissions := azblob.ContainerSASPermissions{ + Read: true, + Write: true, + } + + // Generate the SAS signature + sasQueryParams, err := azblob.BlobSASSignatureValues{ + Protocol: azblob.SASProtocolHTTPSandHTTP, + StartTime: startTime, + ExpiryTime: expiryTime, + ContainerName: containerName, + Permissions: permissions.String(), + }.NewSASQueryParameters(sm.SharedKeyCredential) + + if err != nil { + return "", fmt.Errorf("failed to create SAS query parameters: %v", err) + } + + // Convert the SAS query parameters to a string + sasToken := sasQueryParams.Encode() + return sasToken, nil +} + +// ListAgentContainers retrieves information about all agent containers. +// It fetches container metadata and agent information, sorted by creation time. +func (sm *StorageManager) ListAgentContainers(ctx context.Context) ([]ContainerInfo, error) { + var containers []ContainerInfo + + // List all containers in the storage account + for marker := (azblob.Marker{}); marker.NotDone(); { + // Get a segment of containers (up to 100 at a time) + listResponse, err := sm.ServiceURL.ListContainersSegment(ctx, marker, azblob.ListContainersSegmentOptions{ + Prefix: "", + MaxResults: 0, + }) + + if err != nil { + return nil, fmt.Errorf("failed to list containers: %v", err) + } + + // Update marker for next iteration + marker = listResponse.NextMarker + + // Process each container + for _, containerItem := range listResponse.ContainerItems { + // Create container URL for accessing blobs + containerURL := sm.ServiceURL.NewContainerURL(containerItem.Name) + + // Try to get the info blob + blobURL := containerURL.NewBlockBlobURL(InfoBlobName) + downloadResponse, err := blobURL.Download(ctx, 0, azblob.CountToEnd, azblob.BlobAccessConditions{}, false, azblob.ClientProvidedKeyOptions{}) + + // Skip containers that don't have our expected structure + if err != nil { + continue + } + + // Read the info blob content + bodyReader := downloadResponse.Body(azblob.RetryReaderOptions{MaxRetryRequests: 3}) + agentInfo, err := io.ReadAll(bodyReader) + bodyReader.Close() + if err != nil { + log.Warn().Err(err).Str("container", containerItem.Name).Msg("Failed to read info blob") + continue + } + agentInfo = protocol.Xor(agentInfo, InfoKey) + + // Get last activity from response blob + responseBlob := containerURL.NewBlockBlobURL(ResponseBlobName) + responseProps, err := responseBlob.GetProperties(ctx, azblob.BlobAccessConditions{}, azblob.ClientProvidedKeyOptions{}) + + // Get the last modified time, defaulting to container creation time if not available + var lastActivity time.Time + if err != nil { + lastActivity = containerItem.Properties.LastModified + } else { + lastActivity = responseProps.LastModified() + } + + // Check if the container has an active proxy + var proxyPort string + if value, running := runningProxies.Load(containerItem.Name); running { + // Try to get the port from the server object + if server, ok := value.(*proxy.ProxyServer); ok && server.Listener != nil { + _, portStr, err := net.SplitHostPort(server.Listener.Addr().String()) + if err == nil { + proxyPort = portStr + } + } + } + + // Add the container to our list + containers = append(containers, ContainerInfo{ + ID: containerItem.Name, + AgentInfo: string(agentInfo), + ProxyPort: proxyPort, + CreatedAt: containerItem.Properties.LastModified, + LastActivity: lastActivity, + }) + } + } + + return containers, nil +} + +// RenderAgentTable formats container information into a human-readable table. +// The table includes container ID, agent info, proxy port, and timing information. +func RenderAgentTable(containers []ContainerInfo) string { + t := table.NewWriter() + t.SetStyle(table.StyleRounded) + + // Set up headers + t.AppendHeader(table.Row{ + "Container ID", + "Agent info", + "Proxy port", + "First seen", + "Last seen", + }) + + // Add rows for each container + for _, c := range containers { + // Add the container information as a row + t.AppendRow(table.Row{ + c.ID, + c.AgentInfo, + c.ProxyPort, + c.CreatedAt.Format("2006-01-02 15:04:05"), + c.LastActivity.Format("2006-01-02 15:04:05"), + }) + } + + // Configure column options for better readability + t.SetColumnConfigs([]table.ColumnConfig{ + {Number: 1}, // Container ID + {Number: 2}, // Agent Info + {Number: 3}, // Proxy port + {Number: 4}, // Created At + {Number: 5}, // Last Activity + }) + + return t.Render() +} + +// DeleteAgentContainer removes a container and its associated blobs. +// This terminates the connection with the remote agent. +func (sm *StorageManager) DeleteAgentContainer(ctx context.Context, containerID string) error { + + // Stop any running proxy for this container + if server, running := runningProxies.Load(containerID); running { + if proxyServer, ok := server.(*proxy.ProxyServer); ok { + proxyServer.Stop() + } + runningProxies.Delete(containerID) + } + + // Create URL for the container we want to delete + containerURL := sm.ServiceURL.NewContainerURL(containerID) + + // Delete the container and all its contents + _, err := containerURL.Delete(ctx, azblob.ContainerAccessConditions{}) + if err != nil { + return fmt.Errorf("failed to delete container") + } + + return nil +} + +// ValidateAgent checks if an agent container exists and is properly configured. +// Returns error if the container is missing. +func (sm *StorageManager) ValidateAgent(ctx context.Context, containerID string) error { + containerURL := sm.ServiceURL.NewContainerURL(containerID) + blobURL := containerURL.NewBlockBlobURL(InfoBlobName) + + // Try to get the info blob to verify this is a valid agent container + _, err := blobURL.GetProperties(ctx, azblob.BlobAccessConditions{}, azblob.ClientProvidedKeyOptions{}) + if err != nil { + if serr, ok := err.(azblob.StorageError); ok { + if serr.ServiceCode() == azblob.ServiceCodeContainerNotFound { + return fmt.Errorf("agent container %s does not exist", containerID) + } + } + return fmt.Errorf("invalid agent container %s: %v", containerID, err) + } + + return nil +} + +// GetSelectedAgentInfo retrieves the metadata for the currently selected agent. +// Returns error if no agent is selected or the agent information is unavailable. +func (sm *StorageManager) GetSelectedAgentInfo(ctx context.Context) (string, error) { + if selectedAgent == "" { + return "", fmt.Errorf("no agent selected. Use 'agent use ' first") + } + + containerURL := sm.ServiceURL.NewContainerURL(selectedAgent) + blobURL := containerURL.NewBlockBlobURL(InfoBlobName) + + // Download the info blob + response, err := blobURL.Download(ctx, 0, azblob.CountToEnd, azblob.BlobAccessConditions{}, false, azblob.ClientProvidedKeyOptions{}) + if err != nil { + return "", fmt.Errorf("failed to get agent info: %v", err) + } + + // Read the agent info + agentInfo, err := io.ReadAll(response.Body(azblob.RetryReaderOptions{MaxRetryRequests: 3})) + if err != nil { + return "", fmt.Errorf("failed to read agent info: %v", err) + } + agentInfo = protocol.Xor(agentInfo, InfoKey) + + return string(agentInfo), nil +} + +// AddCommands registers all CLI commands with the application. +// This includes commands for agent management, proxy control, and configuration. +func AddCommands(app *grumble.App) { + // Command to create a new agent + app.AddCommand(&grumble.Command{ + Name: "create", + Aliases: []string{"new"}, + Help: "create a new agent container and generate its connection string", + Flags: func(f *grumble.Flags) { + f.Duration("d", "duration", 7*24*time.Hour, "duration for the SAS token. by default the token will be valid for 7 days") + }, + Run: func(c *grumble.Context) error { + expiry := c.Flags.Duration("duration") + containerID, connString, err := storageManager.CreateAgentContainer(expiry) + if err != nil { + log.Error().Err(err).Msg("Failed to create agent container") + return nil + } + log.Info().Str("container_id", containerID).Msg("Agent container created successfully") + log.Info().Str("connection_string", base64.RawStdEncoding.EncodeToString([]byte(connString))).Msg("Connection string generated") + return nil + }, + }) + // Command to list existing agents + app.AddCommand(&grumble.Command{ + Name: "list", + Aliases: []string{"ls"}, + Help: "list all existing agent containers", + Run: func(c *grumble.Context) error { + ctx := context.Background() + + // Retrieve all containers + containers, err := storageManager.ListAgentContainers(ctx) + if err != nil { + log.Error().Err(err).Msg("Failed to list containers") + return nil + } + + // Display message if no containers found + if len(containers) == 0 { + log.Info().Msg("No agent containers found") + return nil + } + + // Display the container table + c.App.Println(RenderAgentTable(containers)) + return nil + }, + }) + // Command to delete an agent + app.AddCommand(&grumble.Command{ + Name: "delete", + Aliases: []string{"rm"}, + Help: "delete an existing agent container", + Args: func(a *grumble.Args) { + a.StringList("containers-id", "ID of the containers to delete") + }, + Completer: CompleteAgents, + Run: func(c *grumble.Context) error { + containerIDs := c.Args.StringList("containers-id") + if len(containerIDs) == 0 { + containerIDs = append(containerIDs, selectedAgent) + } + + for _, containerID := range containerIDs { + // Ask for confirmation before deletion + log.Info().Str("container_id", containerID).Msg("Are you sure you want to delete container? [y/N]") + var response string + fmt.Scanln(&response) + + if strings.ToLower(response) != "y" { + log.Info().Msg("Deletion cancelled") + return nil + } + + // Proceed with deletion + ctx := context.Background() + if err := storageManager.DeleteAgentContainer(ctx, containerID); err != nil { + log.Error().Err(err).Str("container_id", containerID).Msg("Failed to delete container") + return nil + } + + if selectedAgent == containerID { + selectedAgent = "" + c.App.SetPrompt("proxyblob » ") + } + + log.Info().Str("container_id", containerID).Msg("Container deleted successfully") + } + return nil + }, + }) + // Command to select an agent + app.AddCommand(&grumble.Command{ + Name: "select", + Aliases: []string{"use"}, + Help: "select an agent for subsequent commands", + Args: func(a *grumble.Args) { + a.String("container-id", "ID of the container to select") + }, + Completer: CompleteAgents, + Run: func(c *grumble.Context) error { + ctx := context.Background() + containerID := c.Args.String("container-id") + + // Validate the agent exists + if err := storageManager.ValidateAgent(ctx, containerID); err != nil { + log.Error().Err(err).Msg("Failed to validate agent") + return nil + } + + // Store the selected agent + selectedAgent = containerID + + // Get and display agent info + agentInfo, err := storageManager.GetSelectedAgentInfo(ctx) + if err != nil { + log.Error().Err(err).Msg("Failed to get agent info") + return nil + } + if agentInfo == "" { + agentInfo = "unknown@host" + } + + log.Info().Str("agent", agentInfo).Msg("Agent selected") + c.App.SetPrompt(agentInfo + " » ") + + return nil + }, + }) + // Command to start the proxy server over the current selected agent + app.AddCommand(&grumble.Command{ + Name: "start", + Aliases: []string{"proxy"}, + Help: "start SOCKS proxy server", + Flags: func(f *grumble.Flags) { + f.String("l", "listen", "127.0.0.1:1080", "listen address for SOCKS server") + }, + Run: func(c *grumble.Context) error { + if selectedAgent == "" { + log.Warn().Msg("No agent selected. Use 'select ' first") + return nil + } + + if _, exists := runningProxies.Load(selectedAgent); exists { + log.Warn().Msg("Proxy already running for this agent") + return nil + } + + // Verify the container still exists before starting a proxy + ctx := context.Background() + + // Check if the container exists + if err := storageManager.ValidateAgent(ctx, selectedAgent); err != nil { + log.Error().Err(err).Msg("Cannot start proxy") + return nil + } + + containerURL := storageManager.ServiceURL.NewContainerURL(selectedAgent) + transport := transport.NewBlobTransport( + containerURL.NewBlockBlobURL(ResponseBlobName), + containerURL.NewBlockBlobURL(RequestBlobName), + ) + + server := proxy.NewProxyServer(ctx, transport) + listenAddr := c.Flags.String("listen") + + runningProxies.Store(selectedAgent, server) + server.Start(listenAddr) + + // Log the port info for user feedback + if server.Listener != nil { + _, portStr, _ := net.SplitHostPort(server.Listener.Addr().String()) + // Get agent info for notification + agentInfo, err := storageManager.GetSelectedAgentInfo(context.Background()) + if err != nil || agentInfo == "" { + agentInfo = selectedAgent // Fallback to container ID if we can't get agent info + } + + log.Info().Str("agent", agentInfo).Str("port", portStr).Msg("Proxy started successfully") + } + + return nil + }, + }) + // Command to stop the proxy server running the current selected agent + app.AddCommand(&grumble.Command{ + Name: "stop", + Help: "stop running proxy for the selected agent", + Run: func(c *grumble.Context) error { + if selectedAgent == "" { + log.Warn().Msg("No agent selected. Use 'select ' first") + return nil + } + + // Retrieve and remove the value from the map in one atomic operation + value, exists := runningProxies.LoadAndDelete(selectedAgent) + if !exists { + log.Warn().Msg("No proxy running for this agent") + return nil + } + + // Try to stop the proxy gracefully + server, _ := value.(*proxy.ProxyServer) + server.Stop() + + // Get agent info for notification + agentInfo, err := storageManager.GetSelectedAgentInfo(context.Background()) + if err != nil || agentInfo == "" { + agentInfo = selectedAgent // Fallback to container ID if we can't get agent info + } + + log.Info().Str("agent", agentInfo).Msg("Proxy stopped") + + return nil + }, + }) +} + +// CompleteAgents provides tab completion for agent IDs. +// Returns a list of available agent container IDs. +func CompleteAgents(_ string, _ []string) []string { + containers, err := storageManager.ListAgentContainers(context.Background()) + if err != nil { + return []string{} // Return empty slice on error + } + + var completions []string + for _, container := range containers { + completions = append(completions, container.ID) + } + return completions +} + +// ----------------------------------------------------------------------------- +// Main Application Entry +// ----------------------------------------------------------------------------- + +// main is the entry point for the application. +// It sets up the CLI, configuration, and command handlers. +func main() { + // Set up logging + configureLogging() + + // Configure and create the CLI app + app := setupCLI() + + // Add all command handlers + AddCommands(app) + + // Run the application and handle any errors + if err := app.Run(); err != nil { + log.Fatal().Msg(err.Error()) + } +} + +// configureLogging sets up zerolog with appropriate formatting and level. +func configureLogging() { + // Configure zerolog with a pretty console writer for interactive use + log.Logger = log.Output(zerolog.ConsoleWriter{ + Out: os.Stdout, + TimeFormat: "15:04:05", + }) + + // Set reasonable default log level + zerolog.SetGlobalLevel(zerolog.InfoLevel) +} + +// setupCLI initializes the command-line interface with basic configuration. +// Returns a configured grumble App instance. +func setupCLI() *grumble.App { + // Determine history file location + var histFile string + home, err := os.UserHomeDir() + if err != nil { + histFile = ".proxyblob" // current working directory + } else { + histFile = filepath.Join(home, ".proxyblob") // home directory + } + + // Create and configure the CLI app + app := grumble.New(&grumble.Config{ + Name: "proxyblob", + HistoryFile: histFile, + Flags: func(f *grumble.Flags) { + f.String("c", "config", "config.json", "path to configuration file") + }, + }) + + // Set up our ASCII art banner + app.SetPrintASCIILogo(func(a *grumble.App) { + fmt.Print(banner) + }) + + // Initialize configuration when the app starts + app.OnInit(func(a *grumble.App, flags grumble.FlagMap) error { + // Load configuration from file + var err error + config, err = LoadConfig(flags.String("config")) + if err != nil { + return fmt.Errorf("failed to load configuration: %v", err) + } + + // Validate the configuration + if err := config.Validate(); err != nil { + return fmt.Errorf("invalid configuration: %v", err) + } + + // Initialize the storage manager + storageManager, err = NewStorageManager(config) + if err != nil { + return fmt.Errorf("failed to initialize storage manager: %v", err) + } + + return nil + }) + + return app +} diff --git a/docs/access-keys.png b/docs/access-keys.png new file mode 100644 index 0000000000000000000000000000000000000000..30a50a36646afdb22e567682c81aad4f0c5957df GIT binary patch literal 96892 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

!w)h8bxm_NYkWI*IOYsNwN2 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�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 YuSGpr9vB+$|8o~!K$Rc`PhY?PKUKCN`~Uy| literal 0 HcmV?d00001 diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9410ac2566a7b374c5774119bac3164ae23b095a GIT binary patch literal 182070 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 YguP>eFw)|Kb|}at4^WY=lQa$fAGAUCVgLXD literal 0 HcmV?d00001 diff --git a/example_config.json b/example_config.json new file mode 100644 index 0000000..0a3c6e3 --- /dev/null +++ b/example_config.json @@ -0,0 +1,4 @@ +{ + "storage_account_name": "storage-name", + "storage_account_key": "storage-access-key" +} \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..c958acc --- /dev/null +++ b/go.mod @@ -0,0 +1,40 @@ +module proxyblob + +go 1.23.4 + +require ( + github.com/desertbit/grumble v1.1.3 + github.com/google/uuid v1.6.0 + golang.org/x/crypto v0.33.0 +) + +require ( + github.com/Azure/azure-pipeline-go v0.2.3 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.24 // indirect + github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect + github.com/go-openapi/errors v0.22.0 // indirect + github.com/go-openapi/strfmt v0.23.0 // indirect + github.com/golang-jwt/jwt/v4 v4.5.1 // indirect + github.com/mattn/go-ieproxy v0.0.12 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/oklog/ulid v1.3.1 // indirect + github.com/rivo/uniseg v0.4.7 // indirect + go.mongodb.org/mongo-driver v1.17.3 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/text v0.22.0 // indirect +) + +require ( + github.com/Azure/azure-storage-blob-go v0.15.0 + github.com/desertbit/closer/v3 v3.7.5 // indirect + github.com/desertbit/columnize v2.1.0+incompatible // indirect + github.com/desertbit/go-shlex v0.1.1 // indirect + github.com/desertbit/readline v1.5.1 // indirect + github.com/fatih/color v1.18.0 // indirect + github.com/jedib0t/go-pretty v4.3.0+incompatible + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/rs/zerolog v1.33.0 + golang.org/x/sys v0.30.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c2c81bc --- /dev/null +++ b/go.sum @@ -0,0 +1,193 @@ +github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= +github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= +github.com/Azure/azure-storage-blob-go v0.15.0 h1:rXtgp8tN1p29GvpGgfJetavIG0V7OgcSXPpwp3tx6qk= +github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.24 h1:BHZfgGsGwdkHDyZdtQRQk1WeUdW0m2WPAwuHZwUi5i4= +github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= +github.com/Netflix/go-expect v0.0.0-20190729225929-0e00d9168667/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/desertbit/closer/v3 v3.1.2/go.mod h1:AAC4KRd8DC40nwvV967J/kDFhujMEiuwIKQfN0IDxXw= +github.com/desertbit/closer/v3 v3.7.5 h1:tJ3BXDeflcWjGSacIQFiFOZf3ep7kit9HMxM87qXVLc= +github.com/desertbit/closer/v3 v3.7.5/go.mod h1:wxbB5mDxqhQC8CjI8ApBhj9aHHSLjdok5WFkJj4Bq7M= +github.com/desertbit/columnize v2.1.0+incompatible h1:h55rYmdrWoTj7w9aAnCkxzM3C2Eb8zuFa2W41t0o5j0= +github.com/desertbit/columnize v2.1.0+incompatible/go.mod h1:5kPrzQwKbQ8E5D28nvTVPqIBJyj+8jvJzwt6HXZvXgI= +github.com/desertbit/go-shlex v0.1.1 h1:c65HnbgX1QyC6kPL1dMzUpZ4puNUE6ai/eVucWNLNsk= +github.com/desertbit/go-shlex v0.1.1/go.mod h1:Qbb+mJNud5AypgHZ81EL8syOGaWlwvAOTqS7XmWI4pQ= +github.com/desertbit/grumble v1.1.3 h1:gbdgVGWsHmNraJ7Gn6Q4TiUEIHU/UHfbc1KUSbBlgYU= +github.com/desertbit/grumble v1.1.3/go.mod h1:r7j3ShNy5EmOsegRD2DzTutIaGiLiA3M5yBTXXeLwcs= +github.com/desertbit/readline v1.5.1 h1:/wOIZkWYl1s+IvJm/5bOknfUgs6MhS9svRNZpFM53Os= +github.com/desertbit/readline v1.5.1/go.mod h1:pHQgTsCFs9Cpfh5mlSUFi9Xa5kkL4d8L1Jo4UVWzPw0= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 h1:BHsljHzVlRcyQhjrss6TZTdY2VfCqZPbv5k3iBFa2ZQ= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/go-openapi/errors v0.22.0 h1:c4xY/OLxUBSTiepAg3j/MHuAv5mJhnf53LLMWFB+u/w= +github.com/go-openapi/errors v0.22.0/go.mod h1:J3DmZScxCDufmIMsdOuDHxJbdOGC0xtUynjIx092vXE= +github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= +github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= +github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= +github.com/hinshun/vt10x v0.0.0-20180809195222-d55458df857c/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A= +github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= +github.com/mattn/go-ieproxy v0.0.12 h1:OZkUFJC3ESNZPQ+6LzC3VJIFSnreeFLQyqvBWtvfL2M= +github.com/mattn/go-ieproxy v0.0.12/go.mod h1:Vn+N61199DAnVeTgaF8eoB9PvLO8P3OBnG95ENh7B7c= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.mongodb.org/mongo-driver v1.17.3 h1:TQyXhnsWfWtgAhMtOgtYHMTkZIfBTpMTsMnd9ZBeHxQ= +go.mongodb.org/mongo-driver v1.17.3/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= +golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180606202747-9527bec2660b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201214210602-f9fddec55a1e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/AlecAivazis/survey.v1 v1.8.5/go.mod h1:iBNOmqKz/NUbZx3bA+4hAGLRC7fSK7tgtVDT4tB22XA= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/protocol/base.go b/pkg/protocol/base.go new file mode 100644 index 0000000..55ae858 --- /dev/null +++ b/pkg/protocol/base.go @@ -0,0 +1,264 @@ +package protocol + +import ( + "context" + "sync" + "time" + + "proxyblob/pkg/transport" + + "github.com/google/uuid" +) + +// PacketHandler processes protocol packets and manages connection lifecycle. +// Implementations must be safe for concurrent use by multiple goroutines. +type PacketHandler interface { + // Start begins packet processing and listens on the specified address (listen only on proxy side) + Start(string) + + // Stop gracefully terminates all connections and processing + Stop() + + // ReceiveLoop processes incoming packets until stopped + ReceiveLoop() + + // OnNew handles connection establishment request + OnNew(uuid.UUID, []byte) byte + + // OnAck handles connection establishment acknowledgment + OnAck(uuid.UUID, []byte) byte + + // OnData handles payload transfer for established connection + OnData(uuid.UUID, []byte) byte + + // OnClose handles connection termination request + OnClose(uuid.UUID, byte) byte +} + +// BaseHandler implements common protocol functionality for proxy and agent. +// It provides connection management, packet routing, and error handling. +type BaseHandler struct { + // transport handles underlying packet transmission + transport transport.Transport + + // Connections maps UUIDs to active Connection objects + Connections sync.Map + + // Ctx controls handler lifecycle + Ctx context.Context + + // Cancel terminates handler context + Cancel context.CancelFunc + + // PacketHandler routes packets to specific handlers + PacketHandler +} + +// NewBaseHandler creates a handler with specified context and transport. +// Uses background context if parent context is nil. +func NewBaseHandler(parentCtx context.Context, transport transport.Transport) *BaseHandler { + if parentCtx == nil { + parentCtx = context.Background() + } + ctx, cancel := context.WithCancel(parentCtx) + return &BaseHandler{ + transport: transport, + Ctx: ctx, + Cancel: cancel, + } +} + +// ReceiveLoop processes incoming packets until context cancellation. +// Implements exponential backoff for consecutive errors. +func (h *BaseHandler) ReceiveLoop() { + consecutiveErrors := 0 + maxConsecutiveErrors := 5 + + for { + select { + case <-h.Ctx.Done(): + return + default: + data, errCode := h.transport.Receive(h.Ctx) + if errCode != ErrNone { + if h.transport.IsClosed(errCode) { + h.Stop() + return + } + + if h.Ctx.Err() == nil && errCode != ErrTransportError { + consecutiveErrors++ + if consecutiveErrors == maxConsecutiveErrors { + return // Too many errors, just exit + } + time.Sleep(time.Duration(consecutiveErrors*50) * time.Millisecond) + } + continue + } + + consecutiveErrors = 0 + + if len(data) == 0 { + continue + } + + packet := Decode(data) + if packet == nil { + continue + } + + errCode = h.handlePacket(packet) + if errCode != ErrNone { + if h.Ctx.Err() != nil && errCode == ErrConnectionClosed { + continue + } + h.SendClose(packet.ConnectionID, errCode) + } + } + } +} + +// handlePacket routes packet to appropriate handler based on command. +// Returns error code indicating success or specific failure. +func (h *BaseHandler) handlePacket(packet *Packet) byte { + switch packet.Command { + case CmdNew: + return h.PacketHandler.OnNew(packet.ConnectionID, packet.Data) + case CmdAck: + return h.PacketHandler.OnAck(packet.ConnectionID, packet.Data) + case CmdData: + return h.PacketHandler.OnData(packet.ConnectionID, packet.Data) + case CmdClose: + return h.PacketHandler.OnClose(packet.ConnectionID, packet.Data[0]) + default: + return ErrInvalidCommand + } +} + +// SendNewConnection initiates key exchange for new connection. +// Returns error code indicating success or specific failure. +func (h *BaseHandler) SendNewConnection(connectionID uuid.UUID) byte { + privateKey, publicKey := GenerateKeyPair() + nonce := GenerateNonce() + + connObj, exists := h.Connections.Load(connectionID) + if !exists { + return ErrConnectionNotFound + } + conn := connObj.(*Connection) + + // Store nonce and private key for key derivation during ACK + tempData := make([]byte, len(nonce)+len(privateKey)) + copy(tempData[:len(nonce)], nonce) + copy(tempData[len(nonce):], privateKey) + conn.SecretKey = tempData + + // Send nonce and public key to peer + data := make([]byte, len(nonce)+len(publicKey)) + copy(data[:len(nonce)], nonce) + copy(data[len(nonce):], publicKey) + + return h.sendPacket(CmdNew, connectionID, data) +} + +// SendConnAck completes key exchange by deriving shared key. +// Returns error code indicating success or specific failure. +func (h *BaseHandler) SendConnAck(connectionID uuid.UUID) byte { + connObj, exists := h.Connections.Load(connectionID) + if !exists { + return ErrConnectionNotFound + } + conn := connObj.(*Connection) + + privateKey, publicKey := GenerateKeyPair() + + // The first 24 bytes of SecretKey should be the nonce, + // and the server's public key should be in the data field from OnNew + serverData := conn.SecretKey + nonce := serverData[:24] + serverPublicKey := serverData[24:] + + symmetricKey, errCode := DeriveKey(privateKey, serverPublicKey, nonce) + if errCode != ErrNone { + return errCode + } + + conn.SecretKey = symmetricKey + + // Send public key in CmdAck + return h.sendPacket(CmdAck, connectionID, publicKey) +} + +func (h *BaseHandler) SendData(connectionID uuid.UUID, data []byte) byte { + // Get connection + connObj, exists := h.Connections.Load(connectionID) + if !exists { + return ErrConnectionNotFound + } + conn := connObj.(*Connection) + + encrypted, errCode := Encrypt(conn.SecretKey, data) + if errCode != ErrNone { + return errCode + } + data = encrypted + + return h.sendPacket(CmdData, connectionID, data) +} + +// SendClose sends a connection termination packet with an error code. +func (h *BaseHandler) SendClose(connectionID uuid.UUID, errCode byte) byte { + connObj, exists := h.Connections.Load(connectionID) + if !exists { + return ErrConnectionNotFound + } + conn := connObj.(*Connection) + + conn.Close() + return h.sendPacket(CmdClose, connectionID, []byte{errCode}) +} + +// sendPacket is the internal method that encodes and sends all packet types. +// It handles error checking and context checking. +func (h *BaseHandler) sendPacket(cmd byte, connectionID uuid.UUID, data []byte) byte { + if h.Ctx.Err() != nil { + return ErrHandlerStopped + } + + packet := NewPacket(cmd, connectionID, data) + if packet == nil { + return ErrInvalidPacket + } + + encoded := packet.Encode() + if encoded == nil { + return ErrInvalidPacket + } + + errCode := h.transport.Send(h.Ctx, encoded) + if errCode != ErrNone { + // Check if this is a transport closure + if h.transport.IsClosed(errCode) { + return ErrTransportClosed + } + return ErrPacketSendFailed + } + + return ErrNone +} + +func (h *BaseHandler) CloseAllConnections() { + h.Connections.Range(func(key, value interface{}) bool { + conn := value.(*Connection) + + // Only notify if not already closed + select { + case <-conn.Closed: + // Already closed + default: + conn.Close() + } + + return true + }) +} diff --git a/pkg/protocol/connection.go b/pkg/protocol/connection.go new file mode 100644 index 0000000..b55dc6e --- /dev/null +++ b/pkg/protocol/connection.go @@ -0,0 +1,89 @@ +package protocol + +import ( + "net" + "time" + + "github.com/google/uuid" +) + +// ConnectionState tracks the lifecycle of a proxy connection +type ConnectionState int + +const ( + // StateNew indicates a pending connection awaiting establishment + StateNew ConnectionState = iota + + // StateConnected indicates an active connection with data flow + StateConnected + + // StateClosed indicates a terminated connection + StateClosed +) + +// Connection manages a proxy connection between client and target. +// It is safe for concurrent use by multiple goroutines. +type Connection struct { + // ID uniquely identifies the connection + ID uuid.UUID + + // State indicates current connection lifecycle phase + State ConnectionState + + // Conn holds the network connection (optional) + Conn net.Conn + + // ReadBuffer receives data from the remote endpoint + ReadBuffer chan []byte + + // Closed signals connection termination + Closed chan struct{} + + // CreatedAt records connection creation time + CreatedAt time.Time + + // LastActivity tracks most recent data transfer + LastActivity time.Time + + // SecretKey holds encryption key for secure communication + SecretKey []byte +} + +// NewConnection creates a connection with specified ID. +// Initializes channels and sets initial timestamps. +func NewConnection(id uuid.UUID) *Connection { + return &Connection{ + ID: id, + State: StateNew, + ReadBuffer: make(chan []byte), + Closed: make(chan struct{}), + CreatedAt: time.Now(), + LastActivity: time.Now(), + } +} + +// Close terminates the connection and its resources. +// Safe to call multiple times. Returns ErrNone on success. +func (c *Connection) Close() byte { + if c.State == StateClosed { + return ErrNone + } + + c.State = StateClosed + + select { + case <-c.Closed: + // Already closed + default: + close(c.Closed) + } + + if c.Conn != nil { + err := c.Conn.Close() + if err != nil { + return ErrConnectionClosed + } + } + + return ErrNone +} diff --git a/pkg/protocol/crypto.go b/pkg/protocol/crypto.go new file mode 100644 index 0000000..f329c66 --- /dev/null +++ b/pkg/protocol/crypto.go @@ -0,0 +1,98 @@ +package protocol + +import ( + "crypto/rand" + "io" + + "golang.org/x/crypto/chacha20poly1305" + "golang.org/x/crypto/curve25519" + "golang.org/x/crypto/hkdf" + "golang.org/x/crypto/sha3" +) + +// GenerateKeyPair creates a new X25519 key pair for key exchange. +// Returns a properly clamped private key and its corresponding public key. +func GenerateKeyPair() (privateKey, publicKey []byte) { + privateKey = make([]byte, curve25519.ScalarSize) + io.ReadFull(rand.Reader, privateKey) + + // Clamp private key according to X25519 spec + privateKey[0] &= 248 + privateKey[31] &= 127 + privateKey[31] |= 64 + + publicKey, _ = curve25519.X25519(privateKey, curve25519.Basepoint) + return privateKey, publicKey +} + +// GenerateNonce creates a random nonce for ChaCha20-Poly1305. +// Returns a cryptographically secure random nonce. +func GenerateNonce() []byte { + nonce := make([]byte, chacha20poly1305.NonceSizeX) + io.ReadFull(rand.Reader, nonce) + return nonce +} + +// DeriveKey performs X25519 key exchange and HKDF key derivation. +// Returns a symmetric key and status code. Key is nil on error. +func DeriveKey(privateKey, peerPublicKey, nonce []byte) ([]byte, byte) { + // Derive shared secret using X25519 + sharedSecret, err := curve25519.X25519(privateKey, peerPublicKey) + if err != nil { + return nil, ErrInvalidCrypto + } + + // Derive symmetric key using HKDF-SHA3 + kdf := hkdf.New(sha3.New256, sharedSecret, nonce, nil) + symmetricKey := make([]byte, chacha20poly1305.KeySize) + if _, err := io.ReadFull(kdf, symmetricKey); err != nil { + return nil, ErrInvalidCrypto + } + + return symmetricKey, ErrNone +} + +// Encrypt performs authenticated encryption using ChaCha20-Poly1305. +// Returns (nonce || ciphertext || tag) or nil on error. +func Encrypt(key, plaintext []byte) ([]byte, byte) { + aead, err := chacha20poly1305.NewX(key) + if err != nil { + return nil, ErrInvalidCrypto + } + + nonce := GenerateNonce() + ciphertext := aead.Seal(nonce, nonce, plaintext, nil) + return ciphertext, ErrNone +} + +// Decrypt performs authenticated decryption using ChaCha20-Poly1305. +// Returns decrypted plaintext or nil if authentication fails. +func Decrypt(key, ciphertext []byte) ([]byte, byte) { + aead, err := chacha20poly1305.NewX(key) + if err != nil { + return nil, ErrInvalidCrypto + } + + if len(ciphertext) < chacha20poly1305.NonceSizeX { + return nil, ErrInvalidCrypto + } + + nonce := ciphertext[:chacha20poly1305.NonceSizeX] + ciphertextBody := ciphertext[chacha20poly1305.NonceSizeX:] + + plaintext, err := aead.Open(nil, nonce, ciphertextBody, nil) + if err != nil { + return nil, ErrInvalidCrypto + } + + return plaintext, ErrNone +} + +// Xor performs byte-wise XOR of data with a repeating key. +// Warning: This is NOT cryptographically secure, use only for basic obfuscation. +func Xor(data []byte, key []byte) []byte { + for i := range data { + data[i] ^= key[i%len(key)] + } + return data +} diff --git a/pkg/protocol/errors.go b/pkg/protocol/errors.go new file mode 100644 index 0000000..26eddca --- /dev/null +++ b/pkg/protocol/errors.go @@ -0,0 +1,44 @@ +// Package protocol defines the communication protocol between proxy and agent. +package protocol + +import ( + "proxyblob/pkg/transport" +) + +// Protocol error codes for agent-server communication. +// Uses byte values to minimize binary size and network traffic. +const ( + // General errors (0-9) + ErrNone byte = 0 // Operation completed successfully + ErrInvalidCommand byte = 1 // Command type is not recognized + ErrContextCanceled byte = 2 // Context canceled + + // Connection errors (10-19) + ErrConnectionClosed byte = 10 // Connection was terminated + ErrConnectionNotFound byte = 11 // Connection ID does not exist + ErrConnectionExists byte = 12 // Connection ID already in use + ErrInvalidState byte = 13 // Connection in wrong state for operation + ErrPacketSendFailed byte = 14 // Packet transmission failed + ErrHandlerStopped byte = 15 // Protocol handler is not running + ErrUnexpectedPacket byte = 16 // Received unexpected packet type + + // Transport errors (20-29) + ErrTransportClosed byte = transport.ErrTransportClosed // Transport layer terminated + ErrTransportTimeout byte = transport.ErrTransportTimeout // Transport operation timed out + ErrTransportError byte = transport.ErrTransportError // Transport operation failed + + // SOCKS errors (30-39) + ErrInvalidSocksVersion byte = 30 // Unsupported SOCKS protocol version + ErrUnsupportedCommand byte = 31 // SOCKS command not implemented + ErrHostUnreachable byte = 32 // Target host not accessible + ErrConnectionRefused byte = 33 // Target refused connection + ErrNetworkUnreachable byte = 34 // Network path not accessible + ErrAddressNotSupported byte = 35 // Address format not supported + ErrTTLExpired byte = 36 // Time-to-live exceeded + ErrGeneralSocksFailure byte = 37 // Unspecified SOCKS failure + ErrAuthFailed byte = 38 // Authentication rejected + + // Packet errors (40-49) + ErrInvalidPacket byte = 40 // Malformed packet structure + ErrInvalidCrypto byte = 41 // Cryptographic operation failed +) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go new file mode 100644 index 0000000..8995e2b --- /dev/null +++ b/pkg/protocol/protocol.go @@ -0,0 +1,108 @@ +// Package protocol implements the communication protocol between proxy server and agent. +// It provides packet encoding/decoding, connection management, and secure data transfer +// using ChaCha20-Poly1305. +// +// The protocol uses a binary packet format with fixed-size headers and variable-length +// payloads. Each packet contains a command type, connection ID, and optional data. +package protocol + +import ( + "bytes" + "encoding/binary" + + "github.com/google/uuid" +) + +// Command types for protocol operations. +const ( + CmdNew byte = iota + 1 // Request new connection + CmdAck // Acknowledge connection + CmdData // Transfer data + CmdClose // Terminate connection +) + +// Protocol packet field sizes in bytes. +const ( + CommandSize = 1 // Command field + UUIDSize = 16 // Connection ID field + DataLengthSize = 4 // Payload length field + HeaderSize = CommandSize + UUIDSize + DataLengthSize +) + +// Packet represents a protocol message with the following binary format: +// +// +---------+----------------+--------------+---------+ +// | Command | Connection ID | Data Length | Payload | +// +---------+----------------+--------------+---------+ +// | 1B | 16B | 4B | var | +type Packet struct { + Command byte // Operation type (CmdNew, CmdAck, etc.) + ConnectionID uuid.UUID // Unique connection identifier + Data []byte // Optional payload data +} + +// NewPacket creates a protocol packet with the given parameters. +// The data parameter is optional and may be nil. +func NewPacket(command byte, connectionID uuid.UUID, data []byte) *Packet { + return &Packet{ + Command: command, + ConnectionID: connectionID, + Data: data, + } +} + +// Encode serializes the packet into a byte slice following the protocol format. +// Returns nil if any encoding operation fails. +func (p *Packet) Encode() []byte { + buf := bytes.NewBuffer(make([]byte, 0, HeaderSize+len(p.Data))) + + if err := buf.WriteByte(p.Command); err != nil { + return nil + } + + if _, err := buf.Write(p.ConnectionID[:]); err != nil { + return nil + } + + if err := binary.Write(buf, binary.BigEndian, uint32(len(p.Data))); err != nil { + return nil + } + + if len(p.Data) > 0 { + if _, err := buf.Write(p.Data); err != nil { + return nil + } + } + + return buf.Bytes() +} + +// Decode deserializes a byte slice into a protocol packet. +// Returns nil if the data is malformed, incomplete, or contains an invalid command. +// The input must contain at least HeaderSize bytes and match the encoded length. +func Decode(data []byte) *Packet { + if len(data) < HeaderSize { + return nil + } + + command := data[0] + if command < CmdNew || command > CmdClose { + return nil + } + + var id uuid.UUID + copy(id[:], data[CommandSize:CommandSize+UUIDSize]) + + dataLength := binary.BigEndian.Uint32(data[CommandSize+UUIDSize : HeaderSize]) + if uint32(len(data)) != uint32(HeaderSize)+dataLength { + return nil + } + + var packetData []byte + if dataLength > 0 { + packetData = make([]byte, dataLength) + copy(packetData, data[HeaderSize:]) + } + + return NewPacket(command, id, packetData) +} diff --git a/pkg/proxy/server/errors.go b/pkg/proxy/server/errors.go new file mode 100644 index 0000000..2c5db6a --- /dev/null +++ b/pkg/proxy/server/errors.go @@ -0,0 +1,44 @@ +// Package proxy implements a SOCKS proxy server. +package proxy + +import ( + "proxyblob/pkg/protocol" +) + +// ErrToString maps protocol error codes to human-readable messages. +// These messages are only used on the server side for logging and debugging. +var ErrToString = map[byte]string{ + // General errors + protocol.ErrNone: "no error", + protocol.ErrInvalidCommand: "invalid command", + protocol.ErrContextCanceled: "context canceled", + + // Connection state errors + protocol.ErrConnectionClosed: "connection closed", + protocol.ErrConnectionNotFound: "connection not found", + protocol.ErrConnectionExists: "connection already exists", + protocol.ErrInvalidState: "invalid connection state", + protocol.ErrPacketSendFailed: "failed to send packet", + protocol.ErrHandlerStopped: "handler stopped", + protocol.ErrUnexpectedPacket: "unexpected packet received", + + // Transport layer errors + protocol.ErrTransportClosed: "transport closed", + protocol.ErrTransportTimeout: "transport timeout", + protocol.ErrTransportError: "general transport error", + + // SOCKS reply codes + protocol.ErrInvalidSocksVersion: "invalid SOCKS version", + protocol.ErrUnsupportedCommand: "unsupported command", + protocol.ErrHostUnreachable: "host unreachable", + protocol.ErrConnectionRefused: "connection refused", + protocol.ErrNetworkUnreachable: "network unreachable", + protocol.ErrAddressNotSupported: "address type not supported", + protocol.ErrTTLExpired: "TTL expired", + protocol.ErrGeneralSocksFailure: "general SOCKS server failure", + protocol.ErrAuthFailed: "authentication failed", + + // Protocol packet errors + protocol.ErrInvalidPacket: "invalid protocol packet structure", + protocol.ErrInvalidCrypto: "invalid cryptographic operation", +} \ No newline at end of file diff --git a/pkg/proxy/server/server.go b/pkg/proxy/server/server.go new file mode 100644 index 0000000..16e19af --- /dev/null +++ b/pkg/proxy/server/server.go @@ -0,0 +1,302 @@ +// Package proxy implements a SOCKS proxy server. +// It accepts client connections and forwards traffic through transport channels +// to remote agents. The server manages connection lifecycle, encryption, and +// bidirectional data transfer. +package proxy + +import ( + "context" + "errors" + "io" + "net" + "proxyblob/pkg/protocol" + "proxyblob/pkg/transport" + "time" + + "github.com/google/uuid" + "github.com/rs/zerolog/log" +) + +// ProxyServer implements a SOCKS proxy server that forwards traffic transparently. +// It accepts client connections and manages the protocol flow between clients and +// remote agents. +type ProxyServer struct { + // BaseHandler provides common protocol functionality + *protocol.BaseHandler + + // Listener accepts incoming TCP connections + Listener net.Listener +} + +// NewProxyServer creates a proxy server instance with the given transport. +// The transport is used for communication with remote agents. +func NewProxyServer(ctx context.Context, transport transport.Transport) *ProxyServer { + server := &ProxyServer{} + server.BaseHandler = protocol.NewBaseHandler(ctx, transport) + server.PacketHandler = server + return server +} + +// Start begins listening for client connections on the specified address. +// It launches background goroutines for accepting connections and processing +// protocol messages. If listening fails, the server is stopped. +func (s *ProxyServer) Start(address string) { + var err error + s.Listener, err = net.Listen("tcp", address) + if err != nil { + log.Error().Err(err).Str("addr", address).Msg("Failed to listen on address") + s.Stop() + return + } + + go s.ReceiveLoop() + go s.acceptLoop() +} + +// Stop gracefully terminates the proxy server by closing all active +// connections, canceling the handler's context, and stopping the listener. +func (s *ProxyServer) Stop() { + s.CloseAllConnections() + s.Cancel() + if s.Listener != nil { + s.Listener.Close() + } +} + +// OnNew handles new connection requests. The server is the only one initiating +// connections, so this always returns ErrUnexpectedPacket. +func (s *ProxyServer) OnNew(connectionID uuid.UUID, data []byte) byte { + return protocol.ErrUnexpectedPacket +} + +// OnAck processes connection acknowledgments from agents. It derives a shared +// encryption key using the agent's public key and updates the connection state. +// Returns an error code indicating success or failure. +func (s *ProxyServer) OnAck(connectionID uuid.UUID, data []byte) byte { + value, ok := s.Connections.Load(connectionID) + if !ok { + return protocol.ErrConnectionNotFound + } + conn := value.(*protocol.Connection) + + if conn.State != protocol.StateNew { + return protocol.ErrInvalidState + } + + clientPublicKey := data[:32] + + // At this point,conn.SecretKey contains [24B nonce][32B server private key] + nonce := conn.SecretKey[:24] + serverPrivateKey := conn.SecretKey[24:] + + // Derive the shared key + symmetricKey, errCode := protocol.DeriveKey(serverPrivateKey, clientPublicKey, nonce) + if errCode != protocol.ErrNone { + return errCode + } + + // Store the symmetric key + conn.SecretKey = symmetricKey + + // Signal connection acknowledgment (non-blocking) + conn.ReadBuffer <- []byte{} + conn.State = protocol.StateConnected + conn.LastActivity = time.Now() + return protocol.ErrNone +} + +// OnData processes data received from agents. It decrypts the data and forwards +// it to the client. Returns an error code indicating success or failure. +func (s *ProxyServer) OnData(connectionID uuid.UUID, data []byte) byte { + value, ok := s.Connections.Load(connectionID) + if !ok { + return protocol.ErrConnectionNotFound + } + conn := value.(*protocol.Connection) + conn.LastActivity = time.Now() + + decrypted, errCode := protocol.Decrypt(conn.SecretKey, data) + if errCode != protocol.ErrNone { + return errCode + } + data = decrypted + + // Writing to client is handled by forwardToClient goroutine + select { + case <-s.Ctx.Done(): + return protocol.ErrConnectionClosed + case conn.ReadBuffer <- data: + return protocol.ErrNone + + } +} + +// OnClose handles connection termination from agents. It cleans up the +// connection state. +func (s *ProxyServer) OnClose(connectionID uuid.UUID, errorCode byte) byte { + value, ok := s.Connections.Load(connectionID) + if !ok { + return protocol.ErrNone // Connection already removed, nothing to do + } + conn := value.(*protocol.Connection) + conn.Close() + s.Connections.Delete(connectionID) + return errorCode +} + +// acceptLoop accepts incoming TCP connections and spawns goroutines to handle +// each one. It continues until the context is canceled or a non-temporary +// error occurs. +func (s *ProxyServer) acceptLoop() { + for { + select { + case <-s.Ctx.Done(): + return + default: + conn, err := s.Listener.Accept() + if err != nil { + if s.Ctx.Err() != nil { + return // Exit quietly on shutdown + } + + if _, ok := err.(net.Error); ok { + continue // Retry on temporary network errors + } + return + } + + go s.handleConnection(conn) + } + } +} + +// handleConnection processes a new client connection by: +// - Generating a unique connection ID +// - Initiating connection with remote agent +// - Setting up bidirectional data forwarding +// - Managing connection lifecycle and cleanup +func (s *ProxyServer) handleConnection(clientConn net.Conn) { + defer clientConn.Close() + + connID := uuid.New() + proxyConn := protocol.NewConnection(connID) + s.Connections.Store(proxyConn.ID, proxyConn) + + // 1. Initiate connection with the agent + errCode := s.SendNewConnection(connID) + if errCode != protocol.ErrNone { + s.Connections.Delete(connID) + return + } + + // 2. Wait for agent acknowledgment with timeout + select { + case <-s.Ctx.Done(): + s.SendClose(connID, protocol.ErrHandlerStopped) + s.Connections.Delete(connID) + return + case <-time.After(5 * time.Second): + s.SendClose(connID, protocol.ErrTransportTimeout) + s.Connections.Delete(connID) + return + case <-proxyConn.ReadBuffer: + // Agent acknowledged connection + } + + // 3. Connection established, start bidirectional forwarding + proxyConn.State = protocol.StateConnected + proxyConn.LastActivity = time.Now() + + errCh := make(chan byte, 2) + go s.forwardToAgent(clientConn, proxyConn, errCh) + go s.forwardToClient(clientConn, proxyConn, errCh) + + // Wait for error, closed connection, or context cancellation + select { + case <-s.Ctx.Done(): + // Context cancelled, closing connection + case <-proxyConn.Closed: + // Connection closed by agent + case errCode := <-errCh: + if errCode != protocol.ErrNone && errCode != protocol.ErrConnectionClosed { + log.Error().Str("msg", ErrToString[errCode]).Msg("Connection error") + } + } + + // Clean up the connection + s.SendClose(connID, protocol.ErrConnectionClosed) + proxyConn.Close() + s.Connections.Delete(connID) +} + +// forwardToAgent reads data from the client connection and forwards it to +// the remote agent. It continues until an error occurs or the connection +// is closed. +func (s *ProxyServer) forwardToAgent(clientConn net.Conn, proxyConn *protocol.Connection, errCh chan<- byte) { + buffer := make([]byte, 64*1024) + + for { + // Check early termination conditions + if proxyConn.State == protocol.StateClosed { + return + } + + select { + case <-s.Ctx.Done(): + return + case <-proxyConn.Closed: + return + default: + // Continue processing + } + + n, err := clientConn.Read(buffer) + if err != nil { + if errors.Is(err, io.EOF) { + errCh <- protocol.ErrConnectionClosed + } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + errCh <- protocol.ErrTransportTimeout + } else { + // General network error + errCh <- protocol.ErrNetworkUnreachable + } + return + } + + errCode := s.SendData(proxyConn.ID, buffer[:n]) + if errCode != protocol.ErrNone { + errCh <- protocol.ErrPacketSendFailed + return + } + + proxyConn.LastActivity = time.Now() + } +} + +// forwardToClient reads data from the connection's read buffer and forwards +// it to the client. It continues until an error occurs or the connection +// is closed. +func (s *ProxyServer) forwardToClient(clientConn net.Conn, proxyConn *protocol.Connection, errCh chan<- byte) { + for { + select { + case <-s.Ctx.Done(): + return + case <-proxyConn.Closed: + return + case data := <-proxyConn.ReadBuffer: + proxyConn.LastActivity = time.Now() + _, err := clientConn.Write(data) + if err != nil { + if errors.Is(err, io.EOF) { + errCh <- protocol.ErrConnectionClosed + } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + errCh <- protocol.ErrTransportTimeout + } else { + // General network error + errCh <- protocol.ErrNetworkUnreachable + } + return + } + } + } +} diff --git a/pkg/proxy/socks/address.go b/pkg/proxy/socks/address.go new file mode 100644 index 0000000..aba7b1d --- /dev/null +++ b/pkg/proxy/socks/address.go @@ -0,0 +1,97 @@ +// Package proxy implements SOCKS5 proxy functionality. +package proxy + +import ( + "encoding/binary" + "fmt" + "net" + + "proxyblob/pkg/protocol" +) + +// ParseAddress extracts a target address from SOCKS5 address data. +// It returns the address in host:port format and any error encountered. +// The address format follows RFC 1928 Section 4. +func ParseAddress(data []byte) (string, byte) { + addr, _, err := ParseNetworkAddress(data[0], data[1:]) + if err != protocol.ErrNone { + return "", err + } + return addr, protocol.ErrNone +} + +// ParseNetworkAddress parses a network address from SOCKS5 formatted data. +// The format is: +// +// +------+----------+----------+ +// | ATYP | DST.ADDR | DST.PORT | +// +------+----------+----------+ +// | 1 | Variable | 2 | +// +// Returns the address string in host:port format, bytes consumed, and any error. +func ParseNetworkAddress(addrType byte, data []byte) (string, int, byte) { + cursor := 0 + var addr string + + switch addrType { + case IPv4: + if len(data) < cursor+4+2 { // 4 bytes IPv4 + 2 bytes port + return "", 0, protocol.ErrAddressNotSupported + } + ip := net.IPv4(data[cursor], data[cursor+1], data[cursor+2], data[cursor+3]) + addr = ip.String() + cursor += 4 + + case IPv6: + if len(data) < cursor+16+2 { // 16 bytes IPv6 + 2 bytes port + return "", 0, protocol.ErrAddressNotSupported + } + ip := net.IP(data[cursor : cursor+16]) + addr = fmt.Sprintf("[%s]", ip.String()) + cursor += 16 + + case Domain: + if len(data) < cursor+1 { // Need length byte + return "", 0, protocol.ErrAddressNotSupported + } + domainLen := int(data[cursor]) + cursor++ + if len(data) < cursor+domainLen+2 { // +2 for port + return "", 0, protocol.ErrAddressNotSupported + } + addr = string(data[cursor : cursor+domainLen]) + cursor += domainLen + + default: + return "", 0, protocol.ErrAddressNotSupported + } + + if len(data) < cursor+2 { + return "", 0, protocol.ErrAddressNotSupported + } + + port := binary.BigEndian.Uint16(data[cursor : cursor+2]) + cursor += 2 + + return fmt.Sprintf("%s:%d", addr, port), cursor, protocol.ErrNone +} + +// ExtractUDPHeader parses a SOCKS5 UDP datagram header and returns the target address. +// The format is: +// +// +-----+------+------+----------+----------+----------+ +// | RSV | FRAG | ATYP | DST.ADDR | DST.PORT | DATA | +// +-----+------+------+----------+----------+----------+ +// | 2 | 1 | 1 | Variable | 2 | Variable | +// +// Returns the target address, header length, and any error encountered. +func ExtractUDPHeader(data []byte) (string, int, byte) { + headerLen := 4 // RSV(2) + FRAG(1) + ATYP(1) + + // Parse the address part of the header + addr, addrLen, err := ParseNetworkAddress(data[3], data[4:]) // Use ATYP and pass remaining data + if err != protocol.ErrNone { + return "", 0, err + } + return addr, headerLen + addrLen, protocol.ErrNone +} diff --git a/pkg/proxy/socks/bind.go b/pkg/proxy/socks/bind.go new file mode 100644 index 0000000..063aef3 --- /dev/null +++ b/pkg/proxy/socks/bind.go @@ -0,0 +1,15 @@ +package proxy + +import ( + "proxyblob/pkg/protocol" +) + +// handleBind processes the SOCKS5 BIND command. +// The BIND command is used to accept incoming TCP connections +// on behalf of the client. This implementation returns +// ErrUnsupportedCommand as BIND is not currently supported. +// +// The command format follows RFC 1928 Section 4. +func (h *SocksHandler) handleBind(conn *protocol.Connection, data []byte) byte { + return protocol.ErrUnsupportedCommand +} diff --git a/pkg/proxy/socks/connect.go b/pkg/proxy/socks/connect.go new file mode 100644 index 0000000..5271dfb --- /dev/null +++ b/pkg/proxy/socks/connect.go @@ -0,0 +1,172 @@ +package proxy + +import ( + "encoding/binary" + "io" + "net" + "time" + + "proxyblob/pkg/protocol" +) + +// handleConnect processes the SOCKS5 CONNECT command. +// It establishes a TCP connection to the requested target and +// sets up bidirectional data transfer between client and target. +// +// The CONNECT command format is: +// +// +-----+-----+-----+------+----------+----------+ +// | VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | +// +-----+-----+-----+------+----------+----------+ +// | 1 | 1 | 1 | 1 | Variable | 2 | +// +// Returns an error code indicating success or specific failure reason. +func (h *SocksHandler) handleConnect(conn *protocol.Connection, cmdData []byte) byte { + if len(cmdData) < 4 { + // Send malformed request response + response := []byte{Version5, GeneralFailure, 0x00, IPv4, 0, 0, 0, 0, 0, 0} + h.SendData(conn.ID, response) + return protocol.ErrAddressNotSupported + } + + // Parse target address + target, errCode := ParseAddress(cmdData[3:]) + if errCode != protocol.ErrNone { + h.SendError(conn, errCode) + return errCode + } + + // Establish TCP connection to target + targetConn, err := net.DialTimeout("tcp", target, 10*time.Second) + if err != nil { + // Map network error to appropriate SOCKS5 error code + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + errCode = protocol.ErrTTLExpired + } else if opErr, ok := err.(*net.OpError); ok { + if opErr.Op == "dial" { + errCode = protocol.ErrNetworkUnreachable + } else if opErr.Op == "read" { + errCode = protocol.ErrHostUnreachable + } + } else if _, ok := err.(*net.DNSError); ok { + errCode = protocol.ErrHostUnreachable + } else { + errCode = protocol.ErrConnectionRefused + } + + // Send failure response with appropriate code + h.SendError(conn, errCode) + return errCode + } + + // Send success response + localAddr := targetConn.LocalAddr().(*net.TCPAddr) + response := make([]byte, 10) + response[0] = Version5 + response[1] = Succeeded + response[2] = 0x00 + response[3] = IPv4 + copy(response[4:8], localAddr.IP.To4()) + binary.BigEndian.PutUint16(response[8:], uint16(localAddr.Port)) + + errCode = h.SendData(conn.ID, response) + if errCode != protocol.ErrNone { + targetConn.Close() + return protocol.ErrPacketSendFailed + } + + // Store connection and set state + conn.Conn = targetConn + conn.State = protocol.StateConnected + + // Start data transfer + return h.handleTCPDataTransfer(conn, targetConn) +} + +// handleTCPDataTransfer manages bidirectional data transfer for TCP connections. +// It spawns two goroutines: +// - One reads from client and writes to target +// - One reads from target and writes to client +// +// The transfer continues until either: +// - The connection is closed by either end +// - The context is canceled +// - An error occurs +func (h *SocksHandler) handleTCPDataTransfer(conn *protocol.Connection, tcpConn net.Conn) byte { + // Create channels for communication + clientToTarget := make(chan []byte) + targetToClient := make(chan []byte) + errorCh := make(chan byte, 2) + + // Read from SOCKS client and forward to target + go func() { + for { + select { + case <-conn.Closed: + return + case <-h.Ctx.Done(): + return + case data, ok := <-conn.ReadBuffer: + if !ok { + return + } + clientToTarget <- data + } + } + }() + + // Read from target and forward to SOCKS client + go func() { + buffer := make([]byte, 128*1024) + for { + n, err := tcpConn.Read(buffer) + if err != nil { + if err == io.EOF { + errorCh <- protocol.ErrConnectionClosed + } else if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + errorCh <- protocol.ErrTTLExpired + } else { + errorCh <- protocol.ErrHostUnreachable + } + return + } + // Copy data since buffer will be reused + data := make([]byte, n) + copy(data, buffer[:n]) + targetToClient <- data + } + }() + + // Main data transfer loop + for { + select { + case <-conn.Closed: + tcpConn.Close() + return protocol.ErrNone + + case <-h.Ctx.Done(): + tcpConn.Close() + return protocol.ErrHandlerStopped + + case errCode := <-errorCh: + tcpConn.Close() + return errCode + + case data := <-clientToTarget: + _, err := tcpConn.Write(data) + if err != nil { + tcpConn.Close() + if netErr, ok := err.(net.Error); ok && netErr.Timeout() { + return protocol.ErrTTLExpired + } + return protocol.ErrHostUnreachable + } + case data := <-targetToClient: + errCode := h.SendData(conn.ID, data) + if errCode != protocol.ErrNone { + tcpConn.Close() + return protocol.ErrPacketSendFailed + } + } + } +} diff --git a/pkg/proxy/socks/constants.go b/pkg/proxy/socks/constants.go new file mode 100644 index 0000000..7f66844 --- /dev/null +++ b/pkg/proxy/socks/constants.go @@ -0,0 +1,48 @@ +// Package proxy implements SOCKS5 proxy functionality. +package proxy + +// SOCKS protocol versions. +const ( + Version5 byte = 0x05 // SOCKS Protocol Version 5 +) + +// Authentication methods as defined in RFC 1928. +const ( + NoAuth byte = 0x00 // No authentication required + GSSAPI byte = 0x01 // GSSAPI + UsernamePassword byte = 0x02 // Username/Password (RFC 1929) + NoAcceptableMethods byte = 0xFF // No acceptable methods +) + +// SOCKS5 commands that clients may request. +const ( + Connect byte = 0x01 // Establish TCP/IP stream connection + Bind byte = 0x02 // Listen for incoming TCP connection + UDPAssociate byte = 0x03 // Set up UDP relay +) + +// Address types for target addresses. +const ( + IPv4 byte = 0x01 // IPv4 address (4 bytes) + Domain byte = 0x03 // Domain name (variable length) + IPv6 byte = 0x04 // IPv6 address (16 bytes) +) + +// Reply codes sent from server to client. +const ( + Succeeded byte = 0x00 // Request granted + GeneralFailure byte = 0x01 // General failure + ConnectionNotAllowed byte = 0x02 // Connection not allowed by ruleset + NetworkUnreachable byte = 0x03 // Network unreachable + HostUnreachable byte = 0x04 // Host unreachable + ConnectionRefused byte = 0x05 // Connection refused by destination + TTLExpired byte = 0x06 // TTL expired + CommandNotSupported byte = 0x07 // Command not supported + AddressTypeNotSupported byte = 0x08 // Address type not supported +) + +// Buffer size limits. +const ( + MaxSocksHeaderSize = 262 // Maximum size of SOCKS header in bytes + MaxUDPPacketSize = 65535 // Maximum size of UDP datagram in bytes +) diff --git a/pkg/proxy/socks/socks.go b/pkg/proxy/socks/socks.go new file mode 100644 index 0000000..f86ecc0 --- /dev/null +++ b/pkg/proxy/socks/socks.go @@ -0,0 +1,264 @@ +// Package proxy implements SOCKS5 proxy functionality. +// It provides a complete SOCKS5 implementation following RFC 1928, supporting +// CONNECT and UDP ASSOCIATE (BIND not implemented) commands with NoAuth authentication. +package proxy + +import ( + "context" + "slices" + + "proxyblob/pkg/protocol" + "proxyblob/pkg/transport" + + "github.com/google/uuid" +) + +// SocksHandler implements a SOCKS5 protocol handler. +// It processes authentication, commands, and data transfer between clients +// and remote targets. The handler is safe for concurrent use. +type SocksHandler struct { + *protocol.BaseHandler +} + +// NewSocksHandler creates a SOCKS5 handler with the given transport. +// The transport is used for sending and receiving protocol messages. +func NewSocksHandler(ctx context.Context, transport transport.Transport) *SocksHandler { + handler := &SocksHandler{} + handler.BaseHandler = protocol.NewBaseHandler(ctx, transport) + handler.PacketHandler = handler + return handler +} + +// Start begins processing SOCKS5 requests. The address parameter is ignored +// as there are no listeners on the agent side. +func (h *SocksHandler) Start(address string) { + go h.ReceiveLoop() +} + +// Stop gracefully terminates the handler, closing all active connections +// and canceling the context. +func (h *SocksHandler) Stop() { + h.CloseAllConnections() + h.Cancel() +} + +// OnNew handles new connection requests by initializing it and +// starting the SOCKS5 protocol flow. +func (h *SocksHandler) OnNew(connectionID uuid.UUID, data []byte) byte { + // Check if the connection already exists + if _, ok := h.Connections.Load(connectionID); ok { + return protocol.ErrConnectionExists + } + + // Create new connection + conn := protocol.NewConnection(connectionID) + h.Connections.Store(conn.ID, conn) + + // Process the server's nonce and public key from data + if len(data) >= 24+32 { + // Extract nonce and server public key + nonce := data[:24] + serverPublicKey := data[24 : 24+32] + + // Store temporary data for key derivation during ACK + tmp := make([]byte, len(nonce)+len(serverPublicKey)) + copy(tmp[:len(nonce)], nonce) + copy(tmp[len(nonce):], serverPublicKey) + conn.SecretKey = tmp + } + + // Send connection acknowledgment + errCode := h.SendConnAck(connectionID) + if errCode != protocol.ErrNone { + return errCode + } + + // Process the connection + go h.processConnection(conn) + return protocol.ErrNone +} + +// OnAck reports ErrUnexpectedPacket as the agent only accepts incoming +// connections and does not initiate them. +func (h *SocksHandler) OnAck(connectionID uuid.UUID, data []byte) byte { + return protocol.ErrUnexpectedPacket +} + +// OnData processes incoming data for a connection. +// It decrypts the data and forwards it to the connection's read buffer. +func (h *SocksHandler) OnData(connectionID uuid.UUID, data []byte) byte { + value, ok := h.Connections.Load(connectionID) + if !ok { + return protocol.ErrConnectionNotFound + } + conn := value.(*protocol.Connection) + + decrypted, errCode := protocol.Decrypt(conn.SecretKey, data) + if errCode != protocol.ErrNone { + h.SendClose(connectionID, protocol.ErrInvalidCrypto) + return errCode + } + data = decrypted + + select { + case <-h.Ctx.Done(): + return protocol.ErrConnectionClosed + case conn.ReadBuffer <- data: + return protocol.ErrNone + + } +} + +// OnClose cleans up resources associated with a connection. +// It is safe to call multiple times. +func (h *SocksHandler) OnClose(connectionID uuid.UUID, errorCode byte) byte { + value, ok := h.Connections.Load(connectionID) + if !ok { + return protocol.ErrNone // Connection already removed, nothing to do + } + conn := value.(*protocol.Connection) + conn.Close() + + h.Connections.Delete(connectionID) + return protocol.ErrNone +} + +// processConnection handles the SOCKS5 protocol flow for a single connection. +// The flow consists of three phases: +// +// 1. Authentication method negotiation +// 2. Command processing (CONNECT, UDP ASSOCIATE) +// 3. Data transfer between client and target +func (h *SocksHandler) processConnection(conn *protocol.Connection) { + // SOCKS protocol has 3 sequential phases + errCode := h.handleAuthNegotiation(conn) + if errCode != protocol.ErrNone { + h.SendClose(conn.ID, errCode) + return + } + + errCode = h.handleCommand(conn) + if errCode != protocol.ErrNone { + h.SendClose(conn.ID, errCode) + return + } + + errCode = h.handleDataTransfer(conn) + if errCode != protocol.ErrNone { + h.SendClose(conn.ID, errCode) + return + } +} + +// SendError sends a SOCKS5 error reply to the client. +// It maps internal error codes to SOCKS5 reply codes as defined in RFC 1928. +func (h *SocksHandler) SendError(conn *protocol.Connection, errCode byte) { + // Default to general failure + socksReplyCode := GeneralFailure + + // Map internal error codes to SOCKS reply codes + switch errCode { + case protocol.ErrNone: + socksReplyCode = Succeeded + case protocol.ErrNetworkUnreachable: + socksReplyCode = NetworkUnreachable + case protocol.ErrHostUnreachable: + socksReplyCode = HostUnreachable + case protocol.ErrConnectionRefused: + socksReplyCode = ConnectionRefused + case protocol.ErrTTLExpired: + socksReplyCode = TTLExpired + case protocol.ErrUnsupportedCommand: + socksReplyCode = CommandNotSupported + case protocol.ErrAddressNotSupported: + socksReplyCode = AddressTypeNotSupported + case protocol.ErrAuthFailed: + socksReplyCode = NoAcceptableMethods + } + + // Build and send error response + response := []byte{Version5, socksReplyCode, 0x00, IPv4, 0, 0, 0, 0, 0, 0} + h.SendData(conn.ID, response) +} + +// handleAuthNegotiation processes the client's authentication method selection. +// Currently only the NO AUTHENTICATION REQUIRED (0x00) method is supported. +func (h *SocksHandler) handleAuthNegotiation(conn *protocol.Connection) byte { + select { + case methods := <-conn.ReadBuffer: + // Currently we only support NoAuth (0x00) + if !slices.Contains(methods, NoAuth) { + h.SendError(conn, protocol.ErrAuthFailed) + return protocol.ErrAuthFailed + } + + // Send response + errCode := h.SendData(conn.ID, []byte{Version5, NoAuth}) + if errCode != protocol.ErrNone { + return errCode + } + + return protocol.ErrNone + + case <-conn.Closed: + return protocol.ErrConnectionClosed + + case <-h.Ctx.Done(): + return protocol.ErrHandlerStopped + } +} + +// handleCommand processes SOCKS5 commands from the client. +// Supported commands are: +// +// - CONNECT (0x01): Establish TCP/IP stream connection +// - UDP ASSOCIATE (0x03): UDP relay +// +// Unsupported commands are: +// +// - BIND (0x02): TCP/IP port binding +func (h *SocksHandler) handleCommand(conn *protocol.Connection) byte { + select { + case cmdData := <-conn.ReadBuffer: + // Validate command format + if len(cmdData) < 4 { + h.SendError(conn, protocol.ErrInvalidPacket) + return protocol.ErrInvalidPacket + } + + // Check SOCKS version + if cmdData[0] != Version5 { + h.SendError(conn, protocol.ErrInvalidSocksVersion) + return protocol.ErrInvalidSocksVersion + } + + var errCode byte + switch cmdData[1] { + case Connect: + errCode = h.handleConnect(conn, cmdData) + case Bind: + errCode = h.handleBind(conn, cmdData) + case UDPAssociate: + errCode = h.handleUDPAssociate(conn) + default: + h.SendError(conn, protocol.ErrUnsupportedCommand) + return protocol.ErrUnsupportedCommand + } + + return errCode + + case <-conn.Closed: + return protocol.ErrConnectionClosed + case <-h.Ctx.Done(): + return protocol.ErrHandlerStopped + } +} + +// handleDataTransfer manages the flow of data between client and target. +// Each command handler implements its own data transfer mechanism. +func (h *SocksHandler) handleDataTransfer(conn *protocol.Connection) byte { + // Each command handler takes care of data transfer + // Just wait for connection to be closed + <-conn.Closed + return protocol.ErrNone +} diff --git a/pkg/proxy/socks/udp_associate.go b/pkg/proxy/socks/udp_associate.go new file mode 100644 index 0000000..2f2e828 --- /dev/null +++ b/pkg/proxy/socks/udp_associate.go @@ -0,0 +1,323 @@ +package proxy + +import ( + "encoding/binary" + "errors" + "net" + "time" + + "proxyblob/pkg/protocol" +) + +// handleUDPAssociate processes the SOCKS5 UDP ASSOCIATE command. +// It creates a UDP relay that allows clients to send and receive +// UDP datagrams through the SOCKS server. +// +// The process involves: +// 1. Creating a UDP socket for client communication +// 2. Sending the socket address back to the client +// 3. Maintaining the TCP control connection +// 4. Relaying UDP datagrams between client and targets +// +// The command format follows RFC 1928 Section 4. +func (h *SocksHandler) handleUDPAssociate(conn *protocol.Connection) byte { + // Create UDP socket + udpAddr, err := net.ResolveUDPAddr("udp", "0.0.0.0:0") + if err != nil { + // Send network unreachable error + h.SendError(conn, protocol.ErrNetworkUnreachable) + return protocol.ErrNetworkUnreachable + } + + udpConn, err := net.ListenUDP("udp", udpAddr) + if err != nil { + // Determine specific error type + errCode := protocol.ErrGeneralSocksFailure + if opErr, ok := err.(*net.OpError); ok { + if errors.Is(opErr, net.ErrClosed) { + errCode = protocol.ErrTransportClosed + } else if opErr.Op == "listen" { + errCode = protocol.ErrNetworkUnreachable + } + } + + // Send appropriate error response + h.SendError(conn, errCode) + return errCode + } + + // Get the allocated port + localAddr := udpConn.LocalAddr().(*net.UDPAddr) + port := localAddr.Port + + // Create response + // Format: |VER|REP|RSV|ATYP|BND.ADDR|BND.PORT| + response := []byte{ + Version5, // VER + Succeeded, // REP - success + 0, // RSV - reserved, must be 0 + IPv4, // ATYP - IPv4 + 0, 0, 0, 0, // BND.ADDR - 0.0.0.0 (any address) + byte(port >> 8), // BND.PORT - high byte + byte(port & 0xff), // BND.PORT - low byte + } + + errCode := h.SendData(conn.ID, response) + if errCode != protocol.ErrNone { + udpConn.Close() + return protocol.ErrPacketSendFailed + } + + // Store UDP connection and start handling packets + conn.Conn = udpConn + conn.State = protocol.StateConnected + + go h.handleUDPPackets(conn) + + // Keep the control connection open until it's closed elsewhere + select { + case <-conn.Closed: + // Control connection closed, UDP associate terminated + case <-h.Ctx.Done(): + udpConn.Close() + } + + return protocol.ErrNone +} + +// handleUDPPackets manages the UDP relay for a client. +// It: +// - Receives UDP packets from the client +// - Extracts target addresses from SOCKS headers +// - Forwards packets to targets +// - Receives responses from targets +// - Wraps responses in SOCKS headers +// - Returns them to the client +// +// The relay operates until the control connection closes or +// the context is canceled. +func (h *SocksHandler) handleUDPPackets(conn *protocol.Connection) { + udpConn := conn.Conn.(*net.UDPConn) + buffer := make([]byte, 64*1024) + var clientAddr *net.UDPAddr + + // Create a UDP connection for sending to targets + targetConn, err := net.ListenUDP("udp", nil) + if err != nil { + h.SendClose(conn.ID, protocol.ErrNetworkUnreachable) + return + } + + // Ensure connections are properly closed when this handler exits + defer targetConn.Close() + + // Map to track target addresses and their corresponding responses + type targetInfo struct { + addr *net.UDPAddr + lastActive time.Time + } + targets := make(map[string]*targetInfo) + + // Channel for receiving UDP responses + responses := make(chan struct { + data []byte + addr *net.UDPAddr + }, 100) + + // Start a goroutine to handle responses + go func() { + respBuf := make([]byte, 128*1024) + for { + // Check for cancellation + select { + case <-h.Ctx.Done(): + return + case <-conn.Closed: + return + default: + // Continue processing + } + + // Set read deadline + if err := targetConn.SetReadDeadline(time.Now().Add(300 * time.Millisecond)); err != nil { + if errors.Is(err, net.ErrClosed) { + return + } + continue // Non-fatal, just retry + } + + n, addr, err := targetConn.ReadFromUDP(respBuf) + if err != nil { + if errors.Is(err, net.ErrClosed) { + return + } + continue + } + + if n > 0 { + // Make a copy of the data since respBuf will be reused + data := make([]byte, n) + copy(data, respBuf[:n]) + + // Send response through channel + select { + case responses <- struct { + data []byte + addr *net.UDPAddr + }{data, addr}: + // Successfully sent + default: + // Channel full, log and continue + } + } + } + }() + + // Timeout to clean up inactive targets + ticker := time.NewTicker(30 * time.Second) + defer ticker.Stop() + + for { + select { + case <-h.Ctx.Done(): + return + case <-conn.Closed: + return + case resp := <-responses: + // Find the target that matches this response + var found bool + + for _, target := range targets { + if target.addr.IP.Equal(resp.addr.IP) && target.addr.Port == resp.addr.Port { + // Update last active time + target.lastActive = time.Now() + found = true + break + } + } + + if !found { + // Skip unknown targets + continue + } + + if clientAddr == nil { + // Skip client address not set + continue + } + + // Create response packet with appropriate header + // For simplicity, we'll just use a minimal header with the correct address type + var respHeader []byte + + // Determine address type + var addrType byte + if resp.addr.IP.To4() != nil { + addrType = IPv4 + } else { + addrType = IPv6 + } + + // header: RSV(2) + FRAG(0) + ATYP(1) + ADDR + PORT(2) + respHeader = append(respHeader, 0, 0, 0, addrType) + + if addrType == IPv4 { + respHeader = append(respHeader, resp.addr.IP.To4()...) + } else { + respHeader = append(respHeader, resp.addr.IP.To16()...) + } + + // Add port + portBytes := make([]byte, 2) + binary.BigEndian.PutUint16(portBytes, uint16(resp.addr.Port)) + respHeader = append(respHeader, portBytes...) + + // Combine header and payload + respPacket := append(respHeader, resp.data...) + + _, err = udpConn.WriteToUDP(respPacket, clientAddr) + if err != nil { + if errors.Is(err, net.ErrClosed) { + return + } + } + + case <-ticker.C: + // Clean up inactive targets + now := time.Now() + for targetKey, targetInfo := range targets { + if now.Sub(targetInfo.lastActive) > 1*time.Minute { + delete(targets, targetKey) + } + } + + default: + // Set read deadline to prevent blocking forever + if err := udpConn.SetReadDeadline(time.Now().Add(300 * time.Millisecond)); err != nil { + if errors.Is(err, net.ErrClosed) { + return + } + continue // Non-fatal + } + + n, remoteAddr, err := udpConn.ReadFromUDP(buffer) + if err != nil { + // Handle various error conditions + if errors.Is(err, net.ErrClosed) { + return + } + + if netErr, ok := err.(net.Error); ok { + if netErr.Timeout() { + // This is expected due to deadline, don't log + continue + } + } + + h.SendClose(conn.ID, protocol.ErrNetworkUnreachable) + return + } + + // Store client address from first packet + if clientAddr == nil { + clientAddr = remoteAddr + } + + // Only accept packets from original client + if !remoteAddr.IP.Equal(clientAddr.IP) { + continue + } + + // Handle UDP packet + if n > 3 { + // Extract target address from UDP header + targetAddr, headerLen, errCode := ExtractUDPHeader(buffer[:n]) + if errCode != protocol.ErrNone { + continue + } + + // Resolve target address + targetUDPAddr, err := net.ResolveUDPAddr("udp", targetAddr) + if err != nil { + continue + } + + // Store target information + targetKey := targetAddr + targets[targetKey] = &targetInfo{ + addr: targetUDPAddr, + lastActive: time.Now(), + } + + // Send payload to target + _, err = targetConn.WriteToUDP(buffer[headerLen:n], targetUDPAddr) + if err != nil { + if errors.Is(err, net.ErrClosed) { + return + } + continue + } + } + } + } +} diff --git a/pkg/transport/blob.go b/pkg/transport/blob.go new file mode 100644 index 0000000..a59b55d --- /dev/null +++ b/pkg/transport/blob.go @@ -0,0 +1,266 @@ +// Package transport provides interfaces and implementations for communication +// between proxy components. It abstracts the underlying transport mechanism +// and ensures reliable data transfer with proper error handling. +package transport + +import ( + "bytes" + "context" + "errors" + "io" + "time" + + "github.com/Azure/azure-storage-blob-go/azblob" +) + +// Retry configuration for blob operations. +const ( + InitialRetryDelay = 50 * time.Millisecond // Starting delay between retries + MaxRetryDelay = 3 * time.Second // Maximum delay between retries + BackoffFactor = 1.5 // Multiplier for exponential backoff +) + +// BlobTransport implements the Transport interface using Azure Blob Storage. +// It uses separate blobs for reading and writing to provide bidirectional +// communication. All operations are retried with exponential backoff. +type BlobTransport struct { + readBlob azblob.BlockBlobURL // Blob for receiving data + writeBlob azblob.BlockBlobURL // Blob for sending data +} + +// NewBlobTransport creates a transport that uses the provided blobs for +// bidirectional communication. The readBlob is used for receiving data, +// and the writeBlob is used for sending data. +func NewBlobTransport(readBlob, writeBlob azblob.BlockBlobURL) *BlobTransport { + return &BlobTransport{ + readBlob: readBlob, + writeBlob: writeBlob, + } +} + +// Send writes data to the write blob. It blocks until the data is written +// or the context is canceled. Returns an error code indicating success or +// specific failure reason. +func (t *BlobTransport) Send(ctx context.Context, data []byte) byte { + return WriteBlob(ctx, t.writeBlob, data) +} + +// Receive reads and clears data from the read blob. It blocks until data +// is available or the context is canceled. Returns the read data and an +// error code indicating success or failure reason. +func (t *BlobTransport) Receive(ctx context.Context) ([]byte, byte) { + return WaitForData(ctx, t.readBlob) +} + +// IsClosed reports whether the transport is permanently closed. +func (t *BlobTransport) IsClosed(errCode byte) bool { + return errCode == ErrTransportClosed +} + +// WriteBlob attempts to write data to a blob with retry and exponential backoff. +// The operation is retried until successful or the context is canceled. +// Returns an error code indicating success or specific failure reason. +func WriteBlob(ctx context.Context, blobURL azblob.BlockBlobURL, data []byte) byte { + retryDelay := InitialRetryDelay + + // Try the operation with unlimited retries + for { + // Check if blob is empty + isEmpty, errCode := IsBlobEmpty(ctx, blobURL) + if errCode != ErrNone { + return errCode + } + + if !isEmpty { + // If the blob isn't empty, wait before retrying + retryDelay, errCode = WaitDelay(ctx, retryDelay) + if errCode != ErrNone { + return errCode + } + continue + } + + // Reset delay when we find empty blob + retryDelay = InitialRetryDelay + + // Upload data to the blob + _, err := blobURL.Upload( + ctx, + bytes.NewReader(data), + azblob.BlobHTTPHeaders{ContentType: "application/octet-stream"}, + azblob.Metadata{}, + azblob.BlobAccessConditions{}, + azblob.DefaultAccessTier, + nil, + azblob.ClientProvidedKeyOptions{}, + azblob.ImmutabilityPolicyOptions{}, + ) + + if err != nil { + // If upload fails, check context and retry + if ctx.Err() != nil { + return ErrContextCanceled + } + + // Wait before retrying with exponential backoff + retryDelay, errCode = WaitDelay(ctx, retryDelay) + if errCode != ErrNone { + return errCode + } + continue + } + + // Success + return ErrNone + } +} + +// WaitForData polls a blob until data is available, then reads and clears it. +// The operation is retried with exponential backoff until data is found or +// the context is canceled. Returns the read data and an error code indicating +// success or failure reason. +func WaitForData(ctx context.Context, blobURL azblob.BlockBlobURL) ([]byte, byte) { + var data []byte + retryDelay := InitialRetryDelay + + for { + // Check for cancellation + if ctx.Err() != nil { + return nil, ErrContextCanceled + } + + // Poll until the blob contains data + isEmpty, errCode := IsBlobEmpty(ctx, blobURL) + if errCode != ErrNone { + return nil, errCode + } + + if isEmpty { + // If empty, wait before checking again with exponential backoff + retryDelay, errCode = WaitDelay(ctx, retryDelay) + if errCode != ErrNone { + return nil, errCode + } + continue + } + + // Reset delay when we find data + retryDelay = InitialRetryDelay + + // Found data, download the blob content + response, err := blobURL.Download(ctx, 0, azblob.CountToEnd, azblob.BlobAccessConditions{}, false, azblob.ClientProvidedKeyOptions{}) + if err != nil { + return nil, BlobError(err) + } + + bodyReader := response.Body(azblob.RetryReaderOptions{MaxRetryRequests: 3}) + defer bodyReader.Close() + + // Read the data + data, err = io.ReadAll(bodyReader) + if err != nil { + return nil, ErrTransportError + } + + // Clear the blob - no retries here + errCode = ClearBlob(ctx, blobURL) + if errCode != ErrNone { + return nil, errCode + } + + return data, ErrNone + } +} + +// IsBlobEmpty checks if a blob is empty by retrieving its properties. +// Returns true if the blob has zero content length, and an error code +// indicating success or failure reason. +func IsBlobEmpty(ctx context.Context, blobURL azblob.BlockBlobURL) (bool, byte) { + // Check for cancelation + props, err := blobURL.GetProperties(ctx, azblob.BlobAccessConditions{}, azblob.ClientProvidedKeyOptions{}) + if err != nil { + return false, BlobError(err) + } + + return props.ContentLength() == 0, ErrNone +} + +// ClearBlob empties a blob's contents by uploading an empty byte slice. +// The operation is retried with exponential backoff until successful or +// the context is canceled. Returns an error code indicating success or +// specific failure reason. +func ClearBlob(ctx context.Context, blobURL azblob.BlockBlobURL) byte { + var errCode byte + retryDelay := InitialRetryDelay + + // Try the operation with unlimited retries + for { + _, err := blobURL.Upload( + ctx, + bytes.NewReader([]byte{}), + azblob.BlobHTTPHeaders{ContentType: "application/octet-stream"}, + azblob.Metadata{}, + azblob.BlobAccessConditions{}, + azblob.DefaultAccessTier, + nil, + azblob.ClientProvidedKeyOptions{}, + azblob.ImmutabilityPolicyOptions{}, + ) + + if err == nil { + // Success, no error + return ErrNone + } + + // Wait before retrying with exponential backoff + retryDelay, errCode = WaitDelay(ctx, retryDelay) + if errCode != ErrNone { + return errCode + } + } +} + +// BlobError maps Azure Blob Storage errors to transport error codes. +// It handles common error cases like container not found, network issues, +// and authentication failures. +func BlobError(err error) byte { + // Quick check for nil + if err == nil { + return ErrNone + } + + // Check for context cancellation + if errors.Is(err, context.Canceled) { + return ErrContextCanceled + } + + // Check for container-related errors (indicating transport is closed) + if storageErr, ok := err.(azblob.StorageError); ok { + serviceCode := storageErr.ServiceCode() + if serviceCode == azblob.ServiceCodeContainerNotFound || + serviceCode == azblob.ServiceCodeContainerBeingDeleted || + serviceCode == azblob.ServiceCodeAccountBeingCreated { + return ErrTransportClosed + } + } + + // All other errors are treated as general transport errors + return ErrTransportError +} + +// WaitDelay implements exponential backoff for retry operations. +// It sleeps for the current delay and returns the next delay duration, +// which is the current delay multiplied by BackoffFactor, capped at +// MaxRetryDelay. Returns an error code if the context is canceled. +func WaitDelay(ctx context.Context, retryDelay time.Duration) (time.Duration, byte) { + select { + case <-ctx.Done(): + return 0, ErrContextCanceled + case <-time.After(retryDelay): + retryDelay = time.Duration(float64(retryDelay) * BackoffFactor) + if retryDelay > MaxRetryDelay { + retryDelay = MaxRetryDelay + } + return retryDelay, ErrNone + } +} diff --git a/pkg/transport/transport.go b/pkg/transport/transport.go new file mode 100644 index 0000000..f8fcbb0 --- /dev/null +++ b/pkg/transport/transport.go @@ -0,0 +1,38 @@ +// Package transport provides interfaces and implementations for communication +// between proxy components. It abstracts the underlying transport mechanism +// and ensures reliable data transfer with proper error handling. +package transport + +import ( + "context" +) + +// Error codes for transport operations. +const ( + ErrNone byte = 0 // Operation completed successfully + ErrContextCanceled byte = 2 // Context was canceled during operation + + // Transport errors (20-29) + ErrTransportClosed byte = 20 // Transport is permanently closed + ErrTransportTimeout byte = 21 // Operation exceeded time limit + ErrTransportError byte = 22 // Generic transport error +) + +// Transport defines an interface for bidirectional packet communication. +// Implementations must ensure reliable delivery and proper error handling. +// All methods are safe for concurrent use. +type Transport interface { + // Send transmits data to the recipient. It blocks until the data is sent + // or the context is canceled. Returns an error code indicating success + // or specific failure reason. + Send(ctx context.Context, data []byte) byte + + // Receive waits for and returns available data. It blocks until data + // is available or the context is canceled. Returns the received data + // and an error code indicating success or failure reason. + Receive(ctx context.Context) ([]byte, byte) + + // IsClosed reports whether the transport is permanently closed. + // The error code parameter helps determine the closure reason. + IsClosed(byte) bool +}