diff options
-rw-r--r-- | client.go | 43 | ||||
-rw-r--r-- | main.go | 42 | ||||
-rw-r--r-- | static/admin.html | 4 | ||||
-rw-r--r-- | static/faq.html | 6 | ||||
-rw-r--r-- | static/main.html | 2 | ||||
-rw-r--r-- | static/manage.html | 8 | ||||
-rw-r--r-- | static/ncatalog.html | 6 | ||||
-rw-r--r-- | static/npost.html | 4 | ||||
-rw-r--r-- | static/posts.html | 34 | ||||
-rw-r--r-- | static/rules.html | 6 |
10 files changed, 75 insertions, 80 deletions
@@ -15,11 +15,13 @@ import "os" var Key *string = new(string) -var Boards *[]ObjectBase = new([]ObjectBase) +var FollowingBoards []ObjectBase + +var Boards []Board type Board struct{ Name string - Actor string + Actor Actor Summary string PrefName string InReplyTo string @@ -74,23 +76,11 @@ func IndexGet(w http.ResponseWriter, r *http.Request, db *sql.DB) { t := template.Must(template.ParseFiles("./static/main.html", "./static/index.html")) actor := GetActorFromDB(db, Domain) - - var boardCollection []Board - - for _, e := range *Boards { - var board Board - boardActor := GetActor(e.Id) - board.Name = "/" + boardActor.Name + "/" - board.PrefName = boardActor.PreferredUsername - board.Location = "/" + boardActor.Name - boardCollection = append(boardCollection, board) - board.Restricted = boardActor.Restricted - } var data PageData data.Title = "Welcome to " + actor.PreferredUsername data.Message = fmt.Sprintf("%s is a federated image board based on activitypub. The current version of the code running the server is still a work in progress, expect a bumpy ride for the time being. Get the server code here https://github.com/FChannel0", Domain) - data.Boards = boardCollection + data.Boards = Boards data.Board.Name = "" data.Key = *Key data.Board.Domain = Domain @@ -116,7 +106,7 @@ func OutboxGet(w http.ResponseWriter, r *http.Request, db *sql.DB, collection Co returnData.Board.Summary = actor.Summary returnData.Board.InReplyTo = "" returnData.Board.To = actor.Outbox - returnData.Board.Actor = actor.Id + returnData.Board.Actor.Id = actor.Id returnData.Board.ModCred, _ = GetPasswordFromSession(r) returnData.Board.Domain = Domain returnData.Board.Restricted = actor.Restricted @@ -158,7 +148,7 @@ func OutboxGet(w http.ResponseWriter, r *http.Request, db *sql.DB, collection Co DeleteTombstonePosts(&mergeCollection) sort.Sort(ObjectBaseSortDesc(mergeCollection.OrderedItems)) - returnData.Boards = GetBoardCollection(db) + returnData.Boards = Boards offset := 8 start := page * offset @@ -242,7 +232,7 @@ func CatalogGet(w http.ResponseWriter, r *http.Request, db *sql.DB, collection C returnData.Board.PrefName = actor.PreferredUsername returnData.Board.InReplyTo = "" returnData.Board.To = actor.Outbox - returnData.Board.Actor = actor.Id + returnData.Board.Actor.Id = actor.Id returnData.Board.Summary = actor.Summary returnData.Board.ModCred, _ = GetPasswordFromSession(r) returnData.Board.Domain = Domain @@ -254,7 +244,7 @@ func CatalogGet(w http.ResponseWriter, r *http.Request, db *sql.DB, collection C returnData.Title = "/" + actor.Name + "/ - " + actor.PreferredUsername - returnData.Boards = GetBoardCollection(db) + returnData.Boards = Boards returnData.Posts = mergeCollection.OrderedItems @@ -286,7 +276,7 @@ func PostGet(w http.ResponseWriter, r *http.Request, db *sql.DB){ returnData.Board.Name = actor.Name returnData.Board.PrefName = actor.PreferredUsername returnData.Board.To = actor.Outbox - returnData.Board.Actor = actor.Id + returnData.Board.Actor.Id = actor.Id returnData.Board.Summary = actor.Summary returnData.Board.ModCred, _ = GetPasswordFromSession(r) returnData.Board.Domain = Domain @@ -302,7 +292,7 @@ func PostGet(w http.ResponseWriter, r *http.Request, db *sql.DB){ returnData.Key = *Key - returnData.Boards = GetBoardCollection(db) + returnData.Boards = Boards re = regexp.MustCompile("f\\w+-\\w+") @@ -398,7 +388,7 @@ func GetRemoteActor(id string) Actor { func GetBoardCollection(db *sql.DB) []Board { var collection []Board - for _, e := range *Boards { + for _, e := range FollowingBoards { var board Board boardActor := GetActorFromDB(db, e.Id) if boardActor.Id == "" { @@ -407,8 +397,11 @@ func GetBoardCollection(db *sql.DB) []Board { board.Name = "/" + boardActor.Name + "/" board.PrefName = boardActor.PreferredUsername board.Location = "/" + boardActor.Name + board.Actor = boardActor collection = append(collection, board) } + + sort.Sort(BoardSortAsc(collection)) return collection } @@ -425,7 +418,7 @@ func WantToServe(db *sql.DB, actorName string) (Collection, bool) { return collection, true } - for _, e := range *Boards { + for _, e := range FollowingBoards { boardActor := GetActorFromDB(db, e.Id) if boardActor.Id == "" { @@ -757,3 +750,7 @@ func (a ObjectBaseSortAsc) Len() int { return len(a) } func (a ObjectBaseSortAsc) Less(i, j int) bool { return a[i].Published < a[j].Published } func (a ObjectBaseSortAsc) Swap(i, j int) { a[i], a[j] = a[j], a[i] } +type BoardSortAsc []Board +func (a BoardSortAsc) Len() int { return len(a) } +func (a BoardSortAsc) Less(i, j int) bool { return a[i].Name < a[j].Name } +func (a BoardSortAsc) Swap(i, j int) { a[i], a[j] = a[j], a[i] } @@ -50,12 +50,12 @@ func main() { go MakeCaptchas(db, 100) - *Key = CreateClientKey() + *Key = CreateClientKey() - following := GetActorFollowingDB(db, Domain) + FollowingBoards = GetActorFollowingDB(db, Domain) + + Boards = GetBoardCollection(db) - Boards = &following - // root actor is used to follow remote feeds that are not local //name, prefname, summary, auth requirements, restricted if GetConfigValue("instancename") != "" { @@ -445,9 +445,9 @@ func main() { CheckError(err, "error with add board follow resp") - following := GetActorFollowingDB(db, Domain) - - Boards = &following + FollowingBoards = GetActorFollowingDB(db, Domain) + + Boards = GetBoardCollection(db) http.Redirect(w, r, r.Header.Get("Referer"), http.StatusSeeOther) @@ -493,12 +493,8 @@ func main() { adminData.Domain = Domain adminData.IsLocal = IsActorLocal(db, actor.Id) - var boardCollection []Board - - boardCollection = GetBoardCollection(db) - adminData.Title = "Manage /" + actor.Name + "/" - adminData.Boards = boardCollection + adminData.Boards = Boards adminData.Board.Name = actor.Name adminData.Actor = actor.Id adminData.Key = *Key @@ -532,10 +528,7 @@ func main() { adminData.Domain = Domain adminData.Board.ModCred,_ = GetPasswordFromSession(r) - var boardCollection []Board - - boardCollection = GetBoardCollection(db) - adminData.Boards = boardCollection + adminData.Boards = Boards t.ExecuteTemplate(w, "layout", adminData) } @@ -606,7 +599,7 @@ func main() { var removed bool = false item.Id = respActor.Id - for _, e := range *Boards { + for _, e := range FollowingBoards { if e.Id != item.Id { board = append(board, e) } else { @@ -618,7 +611,9 @@ func main() { board = append(board, item) } - *Boards = board + FollowingBoards = board + + Boards = GetBoardCollection(db) } http.Redirect(w, r, r.Header.Get("Referer"), http.StatusSeeOther) @@ -1902,14 +1897,9 @@ func ParseCommentForReply(comment string) string { func GetActorByName(db *sql.DB, name string) Actor { var actor Actor - for _, e := range *Boards { - boardActor := GetActorFromDB(db, e.Id) - if boardActor.Id == "" { - boardActor = GetRemoteActor(e.Id) - } - - if boardActor.Name == name { - actor = boardActor + for _, e := range Boards { + if e.Actor.Name == name { + actor = e.Actor } } diff --git a/static/admin.html b/static/admin.html index f7db70c..a4c61c1 100644 --- a/static/admin.html +++ b/static/admin.html @@ -33,10 +33,10 @@ <form id="follow-form" action="/{{ .Key }}/follow" method="post" enctype="application/x-www-form-urlencoded"> <label>Subscribe:</label><br> <input id="follow" name="follow" style="margin-bottom: 12px;" placeholder="http://localhost:3000/g"></input><input type="submit" value="Subscribe"><br> - <input type="hidden" name="actor" value="{{ .Actor }}"> + <input type="hidden" name="actor" value="{{ .Actor.Id }}"> </form> <ul style="display: inline-block; padding: 0; margin: 0;"> - {{ $actor := .Actor }} + {{ $actor := .Actor.Id }} {{ $key := .Key }} {{ range .Following }} <li><a href="/{{ $key }}/follow?follow={{ . }}&actor={{ $actor }}">[Unfollow]</a><a href="{{ . }}">{{ . }}</a></li> diff --git a/static/faq.html b/static/faq.html index 0d929f9..2b81e43 100644 --- a/static/faq.html +++ b/static/faq.html @@ -20,7 +20,7 @@ <p>click on "No." next to a post to view its thread.</p> <h4>Uploading files</h4> - <p>max file size is 7MB. the supported file types are "image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/avif","image/apng","video/mp4","video/ogg","video/webm","audio/mpeg","audio/ogg","audio/wav", "audio/wave", "audio/x-wav". these were choosen based on browser support for embeding</p> + <p>max file size is 7MB. the supported file types are "image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/avif","image/apng","video/mp4","video/ogg","video/webm","audio/mpeg","audio/ogg","audio/wav", "audio/wave", "audio/x-wav". these were choosen based on browser support for embeding.</p> <h4>JavaScript why?</h4> <p>a version of the client with no javascript will be made eventually. current version requires it, because of basic functionality needed. no libraries or frameworks for javascript is used besides ECMAScript, just basic selection of DOM elements and modifying their styling. maybe someone would be willing to make a client that uses no javascript.</p> @@ -31,5 +31,9 @@ <h4>Activitypub specific examples</h4> <p>coming soon(tm).</p> </div> + <div style="width: 500px; margin:0 auto; margin-top: 50px; text-align: center;"> + <a href="/">[Home]</a><a href="/static/rules.html">[Rules]</a><a href="/static/faq.html">[FAQ]</a> + <p>All media are copyright to their respective owners.</p> + </div> </body> </html> diff --git a/static/main.html b/static/main.html index 59852ed..7d5d236 100644 --- a/static/main.html +++ b/static/main.html @@ -67,7 +67,7 @@ {{end}} </ul> {{ if .Board.ModCred }} - {{ if eq .Board.ModCred .Board.Domain .Board.Actor }} + {{ if eq .Board.ModCred .Board.Domain .Board.Actor.Id }} <span style="float: right;"><a href="/{{ .Key }}/{{ .Board.Name }}">[Manage Board]</a></span> {{ end }} {{ end }} diff --git a/static/manage.html b/static/manage.html index 3a86f7a..06288cd 100644 --- a/static/manage.html +++ b/static/manage.html @@ -16,7 +16,7 @@ </ul> </div> <a href="/{{ .Board.Name }}">[Return]</a> -{{ $actor := .Actor }} +{{ $actor := .Actor.Id }} {{ $board := .Board }} {{ $key := .Key }} {{ if .IsLocal }} @@ -26,7 +26,7 @@ <label>Subscribe:</label><br> <input id="follow" name="follow" style="margin-bottom: 12px;" placeholder="https://localhost:3000/g"></input> <input type="submit" value="Subscribe"><br> - <input type="hidden" name="actor" value="{{ .Actor }}"> + <input type="hidden" name="actor" value="{{ .Actor.Id }}"> </form> <ul style="display: inline-block; padding: 0; margin: 0;"> @@ -81,8 +81,8 @@ reportedArray.forEach(function(r, i){ var id = r.getAttribute("post") - r.innerText = "/" + {{ .Board.Name }} + "/" + shortURL("{{ .Actor }}", id) - r.href = {{ .Domain }} + "/" + {{ .Board.Name }} + "/" + shortURL("{{ .Actor }}", id) + r.innerText = "/" + {{ .Board.Name }} + "/" + shortURL("{{ .Actor.Id }}", id) + r.href = {{ .Domain }} + "/" + {{ .Board.Name }} + "/" + shortURL("{{ .Actor.Id }}", id) }) </script> {{ end }} diff --git a/static/ncatalog.html b/static/ncatalog.html index a57e291..3638d95 100644 --- a/static/ncatalog.html +++ b/static/ncatalog.html @@ -15,11 +15,11 @@ <div style="padding: 10px; text-align: center;"> {{ range .Posts }} <div style="overflow: hidden; vertical-align: top; padding-right: 24px; padding-bottom: 24px; display: inline-block; width: 180px; max-height: 320px; margin-bottom: 10px;"> - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/delete?id={{ .Id }}">[Delete Post]</a> {{ end }} {{ if .Attachment }} - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/deleteattach?id={{ .Id }}">[Delete Attachment]</a> {{ end }} <a id="{{ .Id }}-anchor" href="/{{ $board.Name }}/"> @@ -74,7 +74,7 @@ </a> </div> <script> - document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor}}", "{{ .Id }}") + document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor.Id}}", "{{ .Id }}") </script> {{ end }} </div> diff --git a/static/npost.html b/static/npost.html index 6c837cf..b91b795 100644 --- a/static/npost.html +++ b/static/npost.html @@ -26,7 +26,7 @@ {{ $replies := (index .Posts 0).Replies }} <span style="float: right;">{{ $replies.TotalItems }} / {{ $replies.TotalImgs }}</span> <div style="width: 500px; margin: 0 auto; text-align: center;"> - <span ><a id="reply-content" href="javascript:quote('{{ $board.Actor }}', '{{ (index .Posts 0).Id }}', 'reply')">[Post a Reply]</a></span> + <span ><a id="reply-content" href="javascript:quote('{{ $board.Actor.Id }}', '{{ (index .Posts 0).Id }}', 'reply')">[Post a Reply]</a></span> </div> <hr> {{ end }} @@ -34,6 +34,6 @@ {{ define "script" }} <script src="/static/js/footerscript.js"></script> <script> - viewLink("{{ .Board.Name }}", "{{ .Board.Actor }}") + viewLink("{{ .Board.Name }}", "{{ .Board.Actor.Id }}") </script> {{ end }} diff --git a/static/posts.html b/static/posts.html index 6bdc7b5..7878a1c 100644 --- a/static/posts.html +++ b/static/posts.html @@ -8,11 +8,11 @@ {{ end }} <div style="overflow: auto;"> <div id="{{ .Id }}" style="overflow: visible; margin-bottom: 12px;"> - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/delete?id={{ .Id }}">[Delete Post]</a> {{ end }} {{ if .Attachment }} - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/deleteattach?id={{ .Id }}">[Delete Attachment]</a> {{ end }} <span style="display: block;">File: <a id="{{ .Id }}-img" href="{{ (index .Attachment 0).Href}}">{{ (index .Attachment 0).Name }}</a><span id="{{ .Id }}-size">({{ (index .Attachment 0).Size }})</span></span> @@ -60,7 +60,7 @@ } </script> {{ end }} - <span style="color: #0f0c5d;"><b>{{ .Name }}</b></span><span style="color: #117743;"><b>{{ if .AttributedTo }} {{.AttributedTo }} {{ else }} Anonymous {{ end }}</b></span><span>{{ .Published }} <a id="{{ .Id }}-anchor" href="/{{ $board.Name }}/">No.</a> <a id="{{ .Id }}-link" title="{{ .Id }}" href="javascript:quote('{{ $board.Actor }}', '{{ $opId }}', '{{ .Id }}')">{{ .Id }}</a> {{ if ne .Type "Tombstone" }}<a href="javascript:report('{{ $board.Actor }}', '{{ .Id }}')">[Report]</a>{{ end }}</span> + <span style="color: #0f0c5d;"><b>{{ .Name }}</b></span><span style="color: #117743;"><b>{{ if .AttributedTo }} {{.AttributedTo }} {{ else }} Anonymous {{ end }}</b></span><span>{{ .Published }} <a id="{{ .Id }}-anchor" href="/{{ $board.Name }}/">No.</a> <a id="{{ .Id }}-link" title="{{ .Id }}" href="javascript:quote('{{ $board.Actor.Id }}', '{{ $opId }}', '{{ .Id }}')">{{ .Id }}</a> {{ if ne .Type "Tombstone" }}<a href="javascript:report('{{ $board.Actor.Id }}', '{{ .Id }}')">[Report]</a>{{ end }}</span> <p id="{{ .Id }}-content" style="white-space: pre-wrap; margin: 10px 30px 10px 30px;">{{.Content}}</p> {{ if .Replies }} {{ $replies := .Replies }} @@ -74,11 +74,11 @@ <div style="display: inline-block; overflow: auto;"> <div style="float: left; display: block; margin-right: 5px;">>></div> <div class="post" style="overflow: auto; padding: 5px; margin-bottom: 2px;"> - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/delete?id={{ .Id }}">[Delete Post]</a> {{ end }} {{ if .Attachment }} - {{ if eq $board.ModCred $board.Domain $board.Actor }} + {{ if eq $board.ModCred $board.Domain $board.Actor.Id }} <a href="/deleteattach?id={{ .Id }}">[Delete Attachment]</a> {{ end }} <span style="display: block;">File <a id="{{ .Id }}-img" href="{{ (index .Attachment 0).Href}}">{{ (index .Attachment 0).Name }}</a> <span id="{{ .Id }}-size">({{ (index .Attachment 0).Size }})</span></span> @@ -126,12 +126,12 @@ } </script> {{ end }} - <span style="color: #0f0c5d;"><b>{{ .Name }}</b></span><span style="color: #117743;"><b>{{ if .AttributedTo }} {{.AttributedTo }} {{ else }} Anonymous {{ end }}</b></span><span>{{ .Published }} <a id="{{ .Id }}-anchor" href="/{{ $board.Name }}/post/{{ $opId }}#{{ .Id }}">No. </a><a id="{{ .Id }}-link" title="{{ .Id }}" href="javascript:quote('{{ $board.Actor }}', '{{ $opId }}', '{{ .Id }}')">{{ .Id }}</a> {{ if ne .Type "Tombstone" }}<a href="javascript:report('{{ $board.Actor }}', '{{ .Id }}')">[Report]</a>{{ end }}</span> + <span style="color: #0f0c5d;"><b>{{ .Name }}</b></span><span style="color: #117743;"><b>{{ if .AttributedTo }} {{.AttributedTo }} {{ else }} Anonymous {{ end }}</b></span><span>{{ .Published }} <a id="{{ .Id }}-anchor" href="/{{ $board.Name }}/post/{{ $opId }}#{{ .Id }}">No. </a><a id="{{ .Id }}-link" title="{{ .Id }}" href="javascript:quote('{{ $board.Actor.Id }}', '{{ $opId }}', '{{ .Id }}')">{{ .Id }}</a> {{ if ne .Type "Tombstone" }}<a href="javascript:report('{{ $board.Actor.Id }}', '{{ .Id }}')">[Report]</a>{{ end }}</span> {{ $parentId := .Id }} {{ if .Replies.OrderedItems }} {{ range .Replies.OrderedItems }} <span id="{{$parentId}}-replyto-{{.Id}}"></span> - <script>document.getElementById("{{ $parentId }}-replyto-{{.Id}}").innerHTML = "<a title='{{ .Id }}' href='/{{ $board.Name }}/" + shortURL("{{ $board.Actor }}", "{{ $opId }}") + "#" + shortURL("{{ $board.Actor }}", "{{ .Id }}") + "'>>>" + shortURL("{{ $board.Actor }}", "{{ .Id }}") + "</a>";</script> + <script>document.getElementById("{{ $parentId }}-replyto-{{.Id}}").innerHTML = "<a title='{{ .Id }}' href='/{{ $board.Name }}/" + shortURL("{{ $board.Actor.Id }}", "{{ $opId }}") + "#" + shortURL("{{ $board.Actor.Id }}", "{{ .Id }}") + "'>>>" + shortURL("{{ $board.Actor.Id }}", "{{ .Id }}") + "</a>";</script> {{ end }} {{ end }} <p id="{{ .Id }}-content" style="white-space: pre-wrap; margin: 10px 30px 10px 30px;">{{.Content}}</p> @@ -144,15 +144,15 @@ document.getElementById("{{ .Id }}-img").innerText = shortImg("{{ (index .Attachment 0).Name }}"); {{ end }} - document.getElementById("{{ .Id }}-link").innerText = shortURL("{{ $board.Actor }}", "{{ .Id }}"); + document.getElementById("{{ .Id }}-link").innerText = shortURL("{{ $board.Actor.Id }}", "{{ .Id }}"); - document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor}}", "{{ $opId }}") + - "#" + shortURL("{{$board.Actor}}", "{{ .Id }}"); - document.getElementById("{{ .Id }}").setAttribute("id", shortURL("{{$board.Actor}}", "{{ .Id }}")); + document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor.Id}}", "{{ $opId }}") + + "#" + shortURL("{{$board.Actor.Id}}", "{{ .Id }}"); + document.getElementById("{{ .Id }}").setAttribute("id", shortURL("{{$board.Actor.Id}}", "{{ .Id }}")); var content = document.getElementById("{{ .Id }}-content"); - content.innerHTML = convertContent('{{$board.Actor}}', content.innerText, '{{ $opId }}') + content.innerHTML = convertContent('{{$board.Actor.Id}}', content.innerText, '{{ $opId }}') </script> {{ end }} @@ -165,16 +165,16 @@ document.getElementById("{{ .Id }}-img").innerText = shortImg("{{ (index .Attachment 0).Name }}"); {{ end }} - document.getElementById("{{ .Id }}-link").innerText = shortURL("{{ $board.Actor }}", "{{ .Id }}"); + document.getElementById("{{ .Id }}-link").innerText = shortURL("{{ $board.Actor.Id }}", "{{ .Id }}"); - document.getElementById("{{ .Id }}").setAttribute("id", shortURL("{{ $board.Actor }}", "{{ .Id }}")); + document.getElementById("{{ .Id }}").setAttribute("id", shortURL("{{ $board.Actor.Id }}", "{{ .Id }}")); - document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor}}", "{{ $opId }}") + - "#" + shortURL("{{$board.Actor}}", "{{ .Id }}"); + document.getElementById("{{ .Id }}-anchor").href = "/{{ $board.Name }}/" + shortURL("{{$board.Actor.Id}}", "{{ $opId }}") + + "#" + shortURL("{{$board.Actor.Id}}", "{{ .Id }}"); var content = document.getElementById("{{ .Id }}-content"); - content.innerHTML = convertContent('{{$board.Actor}}', content.innerText, '{{ $opId }}') + content.innerHTML = convertContent('{{$board.Actor.Id}}', content.innerText, '{{ $opId }}') </script> {{ end }} {{ end }} diff --git a/static/rules.html b/static/rules.html index 574435a..1ca49ee 100644 --- a/static/rules.html +++ b/static/rules.html @@ -2,11 +2,15 @@ <html> <body style="background-color:#ffffee; max-width: 800px; margin: 0 auto;"> <a style="color: black;" href="javascript:history.back()">[Back]</a> - <h1 style="text-align: center;">Rules and Agreements:</h1> + <h1 style="padding-left: 15px;">Rules and Agreements:</h1> <ol> <li>Do not break or violate United States laws.</li> <li>Age Restriction is 18 years and older.</li> <li>Any blue boards are restricted to work safe posts only.</li> </ol> + <div style="padding-top: 500px;width: 500px; margin:0 auto; margin-top: 50px; text-align: center;"> + <a href="/">[Home]</a><a href="/static/rules.html">[Rules]</a><a href="/static/faq.html">[FAQ]</a> + <p>All media are copyright to their respective owners.</p> + </div> </body> </html> |