<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Hello Kea Developers,<div><br></div><div>I am James Wang, a computer science student from The Chinese University of Hong Kong, Shenzhen.</div><div>I am interested in network internals and network security (because of China's Internet Censorship) before I choose to study computer science. In all GSoC organizations, ISC is the few ones that are related to network internals, and the Kea project offers ideas that I believe I can tackle in 3 months' time. Therefore, I want to participate in GSoC 2019 with ISC and the Kea project.</div><div>I would like to tackle Idea No.3 HTTP GET Support. Although No.6 LDAP backend and No.8 leasequery support also sound attractive to me, I think I have the highest chance of success in Idea No.3, because I have past experience in socket programming, web backend development and HTTP protocol.</div><div>Here's my draft plan. If my project succeeded, all builtin read-only APIs in Kea Control Agent would have a GET endpoint. In addition, Kea would have a health endpoint API (<a href="https://gitlab.isc.org/isc-projects/kea/issues/318">Issue #318</a>).</div><div><div><ol><li>Find all read-only APIs and map each one to a GET endpoint</li><li>Add a GET request parser to the HTTP server, if there is none</li><li>Serve GET request by converting them into their equivalent POST requests</li><li>Write documentations on all GET endpoints and how to configure reverse proxy servers (apache2, nginx) to GET-only</li><li>Implement health endpoint API with both GET and POST support (<a href="https://gitlab.isc.org/isc-projects/kea/issues/318">Issue #318</a>)</li><li>I believe we should keep the existing POST methods, for backward compatibility and consistent APIs. New read-only APIs should also support POST methods</li><li>If time and my ability permit, add a way for hook libraries to define their own GET endpoint</li></ol>I have successfully built and installed Kea (1.5.0-git) with unit tests and MySQL support on a Ubuntu VM. My build passed the unit tests ("make check"). I tested the build's DHCPv4 server with a Windows XP VM and a Windows 7 VM. Both clients were assigned a valid IP address and could access the NAT network and Internet. My Windows 10 host was also assigned a valid IP address. Now I'm reading the source code and documentations, trying to understand the implementation of the HTTP server and Kea Control Agent.<div></div></div></div><div><br></div><div>I would appreciate any suggestions and tips. Thanks for your time.</div><div><br></div><div>Best Regards,</div><div>James Wang</div></div></div></div></div></div>