aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LICENSE.txt9
-rw-r--r--README.md58
-rw-r--r--dumb_render.f9022
-rw-r--r--escape.f9022
-rw-r--r--files.f9022
-rw-r--r--gemini-windows.prj12
-rw-r--r--gemini.prj4
-rw-r--r--history.f9022
-rw-r--r--jessl.f9022
-rw-r--r--layout.f9022
-rw-r--r--main.F9024
-rw-r--r--network.F9022
-rw-r--r--protocol.f9022
-rw-r--r--render.f9022
-rw-r--r--request.f9022
-rw-r--r--wsa.f9022
16 files changed, 343 insertions, 6 deletions
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..c46078c
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,9 @@
+Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..b5c34b2
--- /dev/null
+++ b/README.md
@@ -0,0 +1,58 @@
+# LR-87: A Gemini Client
+
+LR-87 is a simple implementation of a client for launching into the world of the
+Gemini protocol, a fun place somewhere between Gopher and the World Wide Web. The
+client is implemented entirely in Fortran.
+
+LR-87 can be launched with an initial address, or it will default to
+[gemini://gemini.circumlunar.space/](gemini://gemini.circumlunar.space/). The
+default interface assumes you are at a dumb terminal, so you'll be presented
+with a nice Fortran-esque input prompt after the first page of a site is displayed.
+The prompt supports paging, entering link numbers, going back, or quitting, and it
+is somewhat self-explanatory. The user should be aware that the command, such as
+"B" for back must be followed by the ENTER/RETURN key.
+
+Links are displayed in LR-87's default renderer as:
+
+`[ 1][ Gemini documentation]`
+
+The link is numbered, and it can be followed by entering the link number at the
+input prompt. Note that the link numbering *will change when page up or page down
+is performed*. If you page down, for example, the new link number 1 is the new
+first visible link, not the link labeled number 1 prior to page down. This
+insane behavior is merely the product of the default renderer, not the underlying
+code itself.
+
+## What's Not Supported
+
+LR-87 works, but it does _not_ remember certificates, store history or bookmarks,
+or support sending user certificates. It will also complain if you attempt to
+download a non-text file or try to access a non-Gemini address. These features
+might be added in the future, but don't hold your breath.
+
+## Compiling
+
+LR-87 requires a substantial number of Fortran 2003/2008 features. The software
+compiles fine with relatively modern versions of GNU Fortran (tested with versions 8
+and 9). [Simply Fortran](https://simplyfortran.com) projects are included for both
+Windows and UNIX-y operating systems.
+
+On Windows, users will need an OpenSSL implementation for linking. I suggest, but
+do not endorse, [this distribution](https://bintray.com/vszakats/generic/openssl),
+which seems to work fine.
+
+## Extending
+
+All drawing, status reporting, and user interaction is handled by derived types
+extended from the abstract "renderer" type, which handles parsing links and wrapping
+regular text internally. A new renderer would be relatively easy to generate if it
+implemented the abstract interfaces in the "renderer" type.
+
+The code currently contains one implementation, "dumb_renderer," that assumes the
+user is at a dumb terminal. It assumes a fixed 80x24 terminal without any escape
+sequences.
+
+## License
+
+LR-87 is Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>, and the software
+is licensed under the JSON license. See LICENSE.txt for more details.
diff --git a/dumb_render.f90 b/dumb_render.f90
index c3b49a1..93897ed 100644
--- a/dumb_render.f90
+++ b/dumb_render.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module dumb_render
use render
implicit none
diff --git a/escape.f90 b/escape.f90
index d960459..d0cba7a 100644
--- a/escape.f90
+++ b/escape.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module escaper
character(*), parameter::need_escape = " $&`:<>[]{}+#%@/;=?\^|~',"//'"'
diff --git a/files.f90 b/files.f90
index b30c436..85eddb1 100644
--- a/files.f90
+++ b/files.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module file_handling
integer, parameter::file_type_plain_text = 1
diff --git a/gemini-windows.prj b/gemini-windows.prj
index d59e44f..2491864 100644
--- a/gemini-windows.prj
+++ b/gemini-windows.prj
@@ -27,7 +27,7 @@
"enabled":"1"
}]
}],
- "Name":"+gemini-windows (target.exe)",
+ "Name":"+gemini-windows (lr87.exe)",
"Files":[{
"filename":".\\dumb_render.f90",
"enabled":"1"
@@ -44,12 +44,18 @@
"filename":".\\layout.f90",
"enabled":"1"
},{
+ "filename":".\\LICENSE.txt",
+ "enabled":"1"
+ },{
"filename":".\\main.F90",
"enabled":"1"
},{
"filename":".\\protocol.f90",
"enabled":"1"
},{
+ "filename":".\\README.md",
+ "enabled":"1"
+ },{
"filename":".\\render.f90",
"enabled":"1"
},{
@@ -57,7 +63,7 @@
"enabled":"0"
}]
},
- "Name":"gemini-windows (target.exe)",
+ "Name":"gemini-windows (lr87.exe)",
"Options":{
"Compiler Options":{
"Fortran Flags":"-DWINDOWS",
@@ -74,7 +80,7 @@
"Module Directory":"modules",
"Include Directories":["Default Add-On Include Directory"]
},
- "Target":"target.exe",
+ "Target":"lr87.exe",
"Fortran Options":{
"Use C Preprocessor":"false",
"Runtime Diagnostics":"false",
diff --git a/gemini.prj b/gemini.prj
index 48e0ba7..cb0b4c6 100644
--- a/gemini.prj
+++ b/gemini.prj
@@ -54,7 +54,7 @@
"enabled":"0"
}]
},
- "Name":"gemini (target)",
+ "Name":"gemini (lr87)",
"Options":{
"Compiler Options":{
"Fortran Flags":"",
@@ -71,7 +71,7 @@
"Module Directory":"modules",
"Include Directories":["Default Add-On Include Directory"]
},
- "Target":"target",
+ "Target":"lr87",
"Fortran Options":{
"Use C Preprocessor":"false",
"Runtime Diagnostics":"false",
diff --git a/history.f90 b/history.f90
index e915855..fc178e0 100644
--- a/history.f90
+++ b/history.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module history
implicit none
diff --git a/jessl.f90 b/jessl.f90
index 82d6465..0ee890e 100644
--- a/jessl.f90
+++ b/jessl.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
! Just Enough SSL...
module jessl
diff --git a/layout.f90 b/layout.f90
index 403f644..63732fd 100644
--- a/layout.f90
+++ b/layout.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module layout
implicit none
diff --git a/main.F90 b/main.F90
index 9610207..c313b5f 100644
--- a/main.F90
+++ b/main.F90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
program gemini
use request
use dumb_render
@@ -52,7 +74,7 @@ implicit none
else
- initial_site = "gemini://gemini.circumlunar.space/" ! gemini://pon.ix.tc/
+ initial_site = "gemini://gemini.circumlunar.space/"
end if
diff --git a/network.F90 b/network.F90
index 2ad520b..fc8b410 100644
--- a/network.F90
+++ b/network.F90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module network
use iso_c_binding
implicit none
diff --git a/protocol.f90 b/protocol.f90
index 194e0e7..3348663 100644
--- a/protocol.f90
+++ b/protocol.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module gemini_protocol
implicit none
diff --git a/render.f90 b/render.f90
index d723467..da3406a 100644
--- a/render.f90
+++ b/render.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module render
implicit none
diff --git a/request.f90 b/request.f90
index e9784fd..2c3031b 100644
--- a/request.f90
+++ b/request.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module request
use network
use iso_c_binding
diff --git a/wsa.f90 b/wsa.f90
index c46b097..080da11 100644
--- a/wsa.f90
+++ b/wsa.f90
@@ -1,3 +1,25 @@
+! Copyright (c) 2020 Jeffrey Armstrong <jeff@rainbow-100.com>
+!
+! Permission is hereby granted, free of charge, to any person obtaining a copy
+! of this software and associated documentation files (the "Software"), to deal
+! in the Software without restriction, including without limitation the rights
+! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+! copies of the Software, and to permit persons to whom the Software is
+! furnished to do so, subject to the following conditions:
+!
+! The above copyright notice and this permission notice shall be included in
+! all copies or substantial portions of the Software.
+!
+! The Software shall be used for Good, not Evil.
+!
+! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+! SOFTWARE.
+
module wsa_network
use iso_c_binding
implicit none