ahri | Like VPN | Proxy library

 by   GavinGuan24 Go Version: v0.9.3 License: Apache-2.0

kandi X-RAY | ahri Summary

kandi X-RAY | ahri Summary

ahri is a Go library typically used in Networking, Proxy applications. ahri has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

你可以将它理解为一个 VPN,但 ta 又不是一个传统意义上的 VPN。 你只需要有一个拥有公网 IP 的 VPS 便可以使用 Ahri 同时访问多个内网环境,并且支持使用公网服务器的网络环境。. 请不要将 Ahri 与 frp,SSR,V2Ray 等项目做比较,因为 Ahri 对使用场景的定位与它们不同。. Ahri 基于 TCP,所以不关心转发的数据包是基于何种应用层协议的,也就是说 Ahri 一定支持 http。理论上讲,ta 支持所有基于 TCP 的上层协议。. Ahri 拥有自己的应用层协议(Ahri protocol)来经行流量转发。Ahri 对流量的处理方式类似于 http 2.0,所有的数据均是 帧化 的。. Ahri 采用了 RSA, AES-256-CFB 加密算法保证数据的安全性。. Ahri 由 golang 编写,本身非常底层,执行效率极高。同时,Ahri 采用 多路复用 模式,在 client 与 server 之间仅建立一个 TCP 连接,避免不必要的协议握手。. 低内存, 低 CPU 使用率. 采用 sync.pool 降低 GC 压力与内存占用量。* ahri-client 活跃时,MEM < 7.0MB,%CPU ~= 10%,%CPU max < 15.0% 。* ahri-server 活跃时,MEM < 15.0MB,%CPU ~ 1.5%,%CPU max < 2.1%。. Ahri 由 golang 编写,轻松跨平台;. 在工作中,因商务合作需要使用几家合作公司的内网环境,导致我需要频繁切换 VPN 配置。 而回到家中,如果偶遇突发情况又无法使用自己公司的内网(因为运维不给配)。 TeamViewer 个人版虽然免费,但时不时会出现服务器宕机的情况。 女友公司的运维配置的 VPN 不稳定。. 一系列的恼人事件发生后,我决定编写 Ahri 来改善我的工作与生活质量。同时,希望 Ahri 可以帮助那些遇到类似情况的人。. ahri-client 采用主动注册到 ahri-server 的方式来进行连接,而 ahri-server 会对数个 ahri-client 进行管理。 ahri-client 注册到 ahri-server 后,它们之间会有一个内容加密的 TCP 连接。在这个连接中会传递心跳包与各类数据包。. 基于 TCP ,Ahri 自行定义了一个应用层协议 Ahri Protocol。 ta 由 Ahri Registe Protocol(ARP)与 Ahri Frame Protocol(AFP)组成。 ARP 定义了 ahri-client 应该怎样注册到 ahri-server。 AFP 定义了 ahri-client 与 ahri-server 应该怎样交互数据包。 详细的内容请查看Ahri Protocol。. 在这里我仅想说明,协议中出现了 Frame,表明 Ahri 将数据做了帧化,对数据包的管理方式类似于 HTTP 2.0。在这样的前提下,仅使用一个 TCP 连接便可以使 ahri-client 与 ahri-server 沟通顺畅。. 为了让 ahri-server 管理数个 ahri-client,ARP 规定每一个 ahri-client 均有一个名字(最大长度为 2 的ACSII字符)。 每一个 ahri-client 均有一个 ahri.hosts 文件,可以控制本地请求转发的目的地;也可控制是否对他人提供某些域名或 IP 的转发服务。 其中 'S', 'L', '-', '|' 为系统保留名, 禁止使用它们对 ahri-client 命名. 我们假设自己的客户端名为 'A', 另一个客户端名为 'B', 且均注册至服务端 S, 以下就是 ahri.hosts 文件的示例. 我们回顾一下上面的使用场景。 假设我本机 ahri-client 是 A, 我使用的 ahri-server 是 S, 我公司内网(LAN 1)中有一个 ahri-client 是 B, 别人公司内网(LAN 2)中有一个 ahri-client 是 C。. 当我在自己家时。 我使用自己公司的内网时,流量走向是 A -> S -> B -> LAN 1, 然后原路返回。 我也可以使用对方公司的内网,流量走向是 A -> S -> C -> LAN 2, 然后原路返回。 我也可以正常访问任何公网资源,A -> Internet。. 当我在自己公司,使用自己公司的内网时,流量走向是 A -> LAN 1,然后原路返回。 我也可以使用对方公司的内网,流量走向是 A -> S -> C -> LAN 2, 然后原路返回。 我也可以正常访问任何公网资源,A -> Internet。. 对这个场景的处理其实是我在实现场景一、二的过程中顺带写出来的衍生物。 主要就是你所在的网络环境会对一些公网资源的请求进行拦截。 A -> Internet 这条路不通了。所以换线为 A -> S -> Internet。. 我已经对常用的系统完成了源码编译的工作, 你应该可以在 releases 中找到可运行在你系统上的版本. 如果没有, 请自行从源码编译(go1.12.1+). 详细参数与解释仅需要在命令行下执行对应的帮助程序(因为 windows 的限制,需要将 ahri-client 与 ahri-server 先重命名为 ahri-client.exe 与 ahri-server.exe). 直接运行 ahri-client / ahri-server, 参数如下. 使用 ahri-client, 你几乎仅配置 ahri.hosts 即可使用. 使用 ahri-server, 你需要 openssl 帮你生成 RSA 公私钥对, 如果你是 *nix 环境, 可以直接调用 bash gen_rsa_keys.sh. 为了降低配置难度,压缩包中已包含 start.sh,stop.sh 。 仅需要修改必要的参数即可在 *nix 环境中使用。 至于 Windows,参考 sh 脚本即可编写 bat 即可。. 提示:如果 ahri-client 与 ahri-server 之间的网络环境是 低带宽 或 高延迟,请适当增大 -T 参数的值。. 我已测试并正常使用该工具多时,有任何意见与建议或者问题,请 open 一个 issues。.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              ahri has a low active ecosystem.
              It has 206 star(s) with 41 fork(s). There are 8 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 1 open issues and 8 have been closed. On average issues are closed in 7 days. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of ahri is v0.9.3

            kandi-Quality Quality

              ahri has 0 bugs and 0 code smells.

            kandi-Security Security

              ahri has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              ahri code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              ahri is licensed under the Apache-2.0 License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              ahri releases are available to install and integrate.
              Installation instructions are not available. Examples and code snippets are available.
              It has 2641 lines of code, 116 functions and 21 files.
              It has high code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of ahri
            Get all kandi verified functions for this library.

            ahri Key Features

            No Key Features are available at this moment for ahri.

            ahri Examples and Code Snippets

            No Code Snippets are available at this moment for ahri.

            Community Discussions

            QUESTION

            Best way to navigate a nested JSON in Python?
            Asked 2022-Jan-20 at 09:19

            I have tried different for loops trying to iterate through this JSON and I cant figure out how to do it. I have a list of numbers and want to compare it to the "key" values under each object of "data" (For example, Aatrox, Ahri, Akali, and so on) and if the numbers match store the "name" value in another list.

            Example: listOfNumbers = [266, 166, 123, 283]

            266 and 166 would match the "key" in the Aatrox and Akshan objects respectively so I would want to pull that name and store it in a list.

            I understant this JSON is mostly accessed by key values rather than being indexed so Im not sure how I would iterate through all the "data" objects in a for loop(s).

            JSON im referencing:

            ...

            ANSWER

            Answered 2022-Jan-20 at 08:38

            You simply iterate over the values of the dictionary, check whether the value of the 'key' item is in your list and if that's the case, append the value of the 'name' item to your output list.

            Let jsonObj be your JSON object presented in your question. Then this code should work:

            Source https://stackoverflow.com/questions/70782902

            QUESTION

            NoSuchMethodError: Class 'List has no instance getter
            Asked 2022-Jan-11 at 22:18

            I have gridviewbuilder that takes data from itemGriddata which has onTap function that directs it to a new page that takes data from that model as well but when I click on it the error in the title appears, any help or some kind of enlightement would be appreciated

            this is gridview page

            ...

            ANSWER

            Answered 2022-Jan-11 at 22:18

            The issue is that your SinglePage widget has a prop named final Data data; but the _SinglePageState widget is calling itemGriddata for your title and images. You'll need to change your code like so:

            Source https://stackoverflow.com/questions/70673479

            QUESTION

            How can I remove a level in a JSON file?
            Asked 2021-May-25 at 18:11

            I have this JSON in my js script that goes on for another 150 elements :

            ...

            ANSWER

            Answered 2021-May-25 at 18:11
            const champs = champList.map(obj => {
                const champ = obj.data
                return Object.values(champ)
            })
            

            Source https://stackoverflow.com/questions/67693022

            QUESTION

            How do you find the top 3 maximum values in a Swift dictionary?
            Asked 2021-Jan-16 at 19:22

            I learned that I can show the key and value that is the highest in the dictionary by the code below

            ...

            ANSWER

            Answered 2021-Jan-16 at 03:50

            The max method can only return a single value. If you need to get the top 3 you would need to sort them in descending order and get the first 3 elements using prefix method

            Source https://stackoverflow.com/questions/65746299

            QUESTION

            Store properties from object to array
            Asked 2020-Nov-30 at 00:53

            I have this JSON object:

            ...

            ANSWER

            Answered 2020-Nov-30 at 00:53

            You can implement it like this:

            Source https://stackoverflow.com/questions/65066574

            QUESTION

            Access variable from a class but which one can be changed?
            Asked 2020-Oct-02 at 07:55

            If I have a class:

            ...

            ANSWER

            Answered 2020-Oct-02 at 07:55

            If you want to keep your data format you'll have to create an access method like

            Source https://stackoverflow.com/questions/64163228

            QUESTION

            Trouble getting into json data object
            Asked 2020-Sep-23 at 03:25

            I have some code that allows the user to click a image to then update the page and display the clicked on champions name. the json data looks like this -http://ddragon.leagueoflegends.com/cdn/10.16.1/data/en_US/champion/Alistar.json

            I console.log response.data and see a object of objects and am wondering how to get passed the section that has the response.data.(whatever champion the user picked). I have tried adding a variable like response.data.champion but I assume no variables can be passed like that seeing how it doesnt work.

            Not sure if its even worth posting the code but just in case! My code is below, the fetch im trying to go through is in NewChamp function.
            To make my request simpler, All i want to know for example is how i would get response.data.(whatever the user clicked).key from any possible champion clicked like http://ddragon.leagueoflegends.com/cdn/10.16.1/data/en_US/champion/Alistar.json or http://ddragon.leagueoflegends.com/cdn/10.16.1/data/en_US/champion/Anivia.json or whatever other champion the user clicks.

            ...

            ANSWER

            Answered 2020-Sep-23 at 03:25

            Your response is in the form of Object of Objects. You've to use JSON.stringify(response.data) in order to view the entire data as a string in the debug console.

            You will have to destructure the Object of objects.

            Object.keys(response.data).map((key)=> console.log(response.data[key]))

            In this case if it is just one key

            Source https://stackoverflow.com/questions/64019888

            QUESTION

            Python check value of key in element and return element in list
            Asked 2020-Sep-14 at 12:13

            I have a json file, and I'm reading this file with json library

            This is the json content (example)

            ...

            ANSWER

            Answered 2020-Sep-14 at 12:07

            QUESTION

            AttributeError: 'function' object has no attribute 'grid'
            Asked 2020-Aug-27 at 23:57

            Im a streamer and new to python if anyone can helpo me sort this out ill be super greatful!

            ...

            ANSWER

            Answered 2020-Aug-26 at 17:23

            You used the wrong variable:

            Source https://stackoverflow.com/questions/63602635

            QUESTION

            How can I iterate over this object to to get a new object?
            Asked 2020-Aug-25 at 20:15

            I am relatively new to Javascript, and just learned basic for loops and for in loops. How can I iterate over this object to get certain keys and values? there are a bunch of nested objects in objects, so i am kind of confused. I was thinking of using some sort of "Object...()" method, but not sure which one to use.

            desired output outcome is an object with the given champion key, followed by the champion id/name = {"266": "Aatrox", "103" : "Ahri"}

            example input below

            ...

            ANSWER

            Answered 2020-Aug-25 at 20:15

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install ahri

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link

            Explore Related Topics

            Consider Popular Proxy Libraries

            frp

            by fatedier

            shadowsocks-windows

            by shadowsocks

            v2ray-core

            by v2ray

            caddy

            by caddyserver

            XX-Net

            by XX-net

            Try Top Libraries by GavinGuan24

            log-collector

            by GavinGuan24Java

            hawkeye

            by GavinGuan24Java

            log-collector-core

            by GavinGuan24Java